.app{min-height:100vh;padding:var(--space-6)}.topbar{top:var(--space-3);z-index:20;max-width:var(--width-max);margin:0 auto var(--space-5);justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-5);background:var(--grey-0);border:1px solid var(--grey-3);border-radius:var(--radius-lg);color:var(--grey-8);display:flex;position:sticky}.app-name{font-size:var(--text-lg);font-weight:var(--weight-bold);letter-spacing:var(--tracking-tight);color:var(--grey-8)}.user-actions{align-items:center;gap:var(--space-2);flex-wrap:wrap;justify-content:flex-end;display:flex}.user-actions span{font-size:var(--text-sm);color:var(--grey-6)}.theme-toggle{white-space:nowrap}.user-actions button,.theme-toggle,.new-task-btn,.column-add-btn,.modal-actions button,.auth-form button,.filter-clear,.tag-create-btn,.tag-option-toggle,.tag-option-remove,.board-toast button{transition:background-color .16s ease-out,border-color .16s ease-out,color .16s ease-out,box-shadow .16s ease-out,opacity .16s ease-out}.user-actions button,.modal-actions button:not(.delete-btn),.filter-clear,.column-add-btn{border:1px solid var(--grey-3);border-radius:var(--radius-md);background:var(--grey-0);color:var(--grey-7);font-size:var(--text-sm);font-weight:var(--weight-medium);padding:.5rem .875rem}.user-actions button:hover,.modal-actions button:not(.delete-btn):hover,.filter-clear:hover,.column-add-btn:hover{background:var(--grey-2);border-color:var(--grey-4);color:var(--grey-8)}.user-actions button:active,.modal-actions button:not(.delete-btn):active,.filter-clear:active,.column-add-btn:active{background:var(--grey-3)}.user-actions .new-task-btn,.modal-actions button.save-btn,.auth-form button,.tag-create-btn{border-radius:var(--radius-md);background:var(--accent);color:var(--on-accent);font-size:var(--text-sm);font-weight:var(--weight-bold);border:1px solid #0000;padding:.5rem .875rem}.user-actions .new-task-btn:hover,.modal-actions button.save-btn:hover,.auth-form button:hover,.tag-create-btn:hover:not(:disabled),.user-actions .new-task-btn:active,.modal-actions button.save-btn:active,.auth-form button:active,.tag-create-btn:active{background:var(--accent-hover)}.modal-actions .delete-btn{border-radius:var(--radius-md);background:var(--danger-solid);color:var(--on-danger);font-size:var(--text-sm);font-weight:var(--weight-medium);border:1px solid #0000;margin-right:auto;padding:.5rem .875rem}.modal-actions .delete-btn:hover{background:var(--danger-hover)}.filter-bar{align-items:center;gap:var(--space-2);max-width:var(--width-max);margin:calc(-1 * var(--space-1)) auto var(--space-4);padding:0 var(--space-5);flex-wrap:wrap;display:flex}.filter-search{flex:280px;min-width:0}.filter-bar select{max-width:220px}.filter-bar input,.filter-bar select,.modal input,.modal textarea,.modal select,.auth-form input,.tag-create-name{border:1px solid var(--grey-3);border-radius:var(--radius-md);background:var(--grey-0);color:var(--grey-8);font-size:var(--text-sm);padding:.5rem .75rem;transition:border-color .16s ease-out,box-shadow .16s ease-out}.filter-bar input:hover,.filter-bar select:hover,.modal input:hover,.modal textarea:hover,.modal select:hover,.auth-form input:hover,.tag-create-name:hover{border-color:var(--grey-4)}.filter-bar input:focus,.filter-bar input:focus-visible,.filter-bar select:focus,.filter-bar select:focus-visible,.modal input:focus,.modal input:focus-visible,.modal textarea:focus,.modal textarea:focus-visible,.modal select:focus,.modal select:focus-visible,.auth-form input:focus,.auth-form input:focus-visible,.tag-create-name:focus,.tag-create-name:focus-visible{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.board{max-width:var(--width-max);gap:var(--space-5);grid-template-columns:repeat(3,minmax(260px,1fr));height:calc(100vh - 150px);min-height:420px;margin:0 auto;display:grid}.column{background:var(--grey-0);border:1px solid var(--grey-3);border-radius:var(--radius-lg);min-height:0;padding:var(--space-4) var(--space-3) var(--space-3);flex-direction:column;transition:border-color .16s ease-out,background-color .16s ease-out;display:flex;overflow:hidden}.column.drop-target{border-color:var(--accent);background:var(--accent-soft)}.column-header{justify-content:space-between;align-items:center;gap:var(--space-2);margin-bottom:var(--space-3);padding:0 var(--space-1);display:flex}.column-title{font-size:var(--text-xs);font-weight:var(--weight-bold);letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--grey-6)}.column-badge{min-width:1.75rem;min-height:1.75rem;padding:0 var(--space-2);border-radius:var(--radius-full);background:var(--grey-2);color:var(--grey-6);font-size:var(--text-xs);font-weight:var(--weight-medium);justify-content:center;align-items:center;display:flex}.column-list{gap:var(--space-3);border-radius:var(--radius-md);min-height:0;padding:var(--space-1);border:1px solid #0000;flex-direction:column;flex:1;list-style:none;transition:background-color .16s ease-out;display:flex;overflow-y:auto}.column-list.is-drop-target{background:var(--accent-soft)}.column-empty{min-height:calc(var(--space-8) * 3);border:1px dashed var(--grey-4);border-radius:var(--radius-md);color:var(--grey-5);font-size:var(--text-sm);place-items:center;display:grid}.drop-preview{align-items:center;gap:var(--space-2);min-height:38px;color:var(--accent);font-size:var(--text-xs);font-weight:var(--weight-bold);letter-spacing:var(--tracking-label);text-transform:uppercase;animation:.15s ease-out drop-preview-in;display:flex}.drop-preview span:first-child,.drop-preview span:last-child{border-radius:var(--radius-sm);background:var(--accent);flex:1;height:2px}.drop-preview span:nth-child(2){flex:none}@keyframes drop-preview-in{0%{opacity:0;transform:scaleY(.8)}to{opacity:1;transform:scaleY(1)}}.task-card{background:var(--grey-0);border:1px solid var(--grey-3);border-radius:var(--radius-md);padding:var(--space-3);box-shadow:none;transition:border-color .16s ease-out,box-shadow .16s ease-out,transform .16s ease-out}.task-card:hover{border-color:var(--grey-4);box-shadow:var(--shadow-1);transform:translateY(-1px)}.task-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px;box-shadow:var(--shadow-1)}.task-card h4{margin:0 0 var(--space-2);font-size:var(--text-base);font-weight:var(--weight-medium);line-height:var(--leading-tight);color:var(--grey-8);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.task-card p{margin-bottom:var(--space-2);font-size:var(--text-sm);line-height:var(--leading-normal);color:var(--grey-6);-webkit-line-clamp:1;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.task-card-overlay{border-color:var(--accent);width:min(380px,78vw);box-shadow:var(--shadow-2);transform:scale(1.02)}.badge{padding:1px var(--space-2);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:var(--weight-medium);letter-spacing:var(--tracking-wide);display:inline-block}.priority-low{background:var(--success-soft);color:var(--success)}.priority-medium{background:var(--warning-soft);color:var(--warning)}.priority-high{background:var(--danger-soft);color:var(--danger)}.due-chip{padding:1px var(--space-2);border-radius:var(--radius-full);font-size:var(--text-xs);background:var(--grey-2);color:var(--grey-6);margin-right:var(--space-1);display:inline-block}.due-chip.overdue{background:var(--danger-soft);color:var(--danger);font-weight:var(--weight-medium)}.tag-pills{gap:var(--space-1);margin-top:var(--space-2);flex-wrap:wrap;display:flex}.tag-pill{border-radius:var(--radius-full);padding:var(--space-1) var(--space-2);font-size:var(--text-xs);font-weight:var(--weight-bold);border:1px solid var(--tag-border);align-items:center;line-height:1.2;display:inline-flex}.tag-picker{gap:var(--space-2);flex-direction:column;display:flex}.tag-picker h3{font-size:var(--text-sm);font-weight:var(--weight-bold);color:var(--grey-7);margin:0}.tag-picker-list{gap:var(--space-2);flex-wrap:wrap;display:flex}.tag-option{align-items:center;gap:var(--space-1);border:1px solid var(--grey-3);border-radius:var(--radius-full);padding:var(--space-1);background:var(--grey-2);display:inline-flex}.tag-option-toggle{align-items:center;gap:var(--space-1);color:var(--grey-8);border-radius:var(--radius-full);padding:var(--space-1) var(--space-2);font-size:var(--text-xs);font-weight:var(--weight-bold);background:0 0;border:1px solid #0000;display:inline-flex}.tag-option-toggle:hover{background:var(--grey-3)}.tag-option-toggle:active{background:var(--grey-4)}.tag-option-dot{width:var(--space-2);height:var(--space-2);border-radius:var(--radius-full);flex:none}.tag-option-selected{border-color:#0000}.tag-option-selected .tag-option-toggle{color:var(--grey-8)}.tag-option-remove{border-radius:var(--radius-full);width:1.25rem;height:1.25rem;color:var(--grey-5);font-size:var(--text-md);background:0 0;border:none;justify-content:center;align-items:center;line-height:1;display:inline-flex}.tag-option-remove:hover{background:var(--danger-soft);color:var(--danger)}.tag-create{align-items:center;gap:var(--space-2);display:flex}.tag-create-name{flex:1;min-width:0}.modal .tag-create-colour,.tag-create-colour{width:2.75rem;height:2.75rem;padding:var(--space-1);border:1px solid var(--grey-3);border-radius:var(--radius-md);background:var(--grey-0);cursor:pointer}.tag-create-colour:hover{border-color:var(--grey-4)}.completed .task-card{opacity:.72;filter:saturate(.65)}.completed .task-card h4,.completed .task-card p{color:var(--grey-5)}.column-add-btn{margin-top:var(--space-3)}.modal-backdrop{background:var(--overlay);padding:var(--space-5);z-index:100;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal{background:var(--grey-0);border:1px solid var(--grey-3);border-radius:var(--radius-lg);padding:var(--space-6);width:min(520px,92vw);box-shadow:var(--shadow-2)}.modal h2{margin-bottom:var(--space-4);font-size:var(--text-lg);font-weight:var(--weight-bold);letter-spacing:var(--tracking-tight);color:var(--grey-8)}.modal form{gap:var(--space-4);flex-direction:column;display:flex}.field-label{gap:var(--space-1);color:var(--grey-7);font-size:var(--text-sm);font-weight:var(--weight-medium);flex-direction:column;display:flex}.modal textarea{min-height:calc(var(--space-8) * 3);resize:vertical}.modal-actions{gap:var(--space-2);margin-top:var(--space-1);justify-content:flex-end;align-items:center;display:flex}.auth-page{min-height:100vh;padding:var(--space-8) var(--space-4);place-items:center;display:grid}.auth-form{gap:var(--space-3);background:var(--grey-0);border:1px solid var(--grey-3);border-radius:var(--radius-lg);width:min(420px,100%);padding:var(--space-8) var(--space-6);flex-direction:column;display:flex}.auth-form h1{margin-bottom:var(--space-4);font-size:var(--text-xl);font-weight:var(--weight-bold);letter-spacing:var(--tracking-tight);color:var(--grey-8)}.auth-form button{margin-top:var(--space-2);font-size:var(--text-base);padding:.6rem 1rem}.auth-form p{text-align:center;color:var(--grey-6);font-size:var(--text-sm)}.auth-form a{color:var(--accent);font-weight:var(--weight-medium)}.auth-form a:hover{color:var(--accent-hover);text-decoration:underline}.auth-error{padding:var(--space-2) var(--space-3);border:1px solid var(--danger-border);border-radius:var(--radius-md);background:var(--danger-soft);color:var(--danger);font-size:var(--text-sm);font-weight:var(--weight-medium)}.board-toast{z-index:150;right:var(--space-6);bottom:var(--space-6);align-items:center;gap:var(--space-4);max-width:min(460px, calc(100vw - var(--space-8)));padding:var(--space-3) var(--space-4);border:1px solid var(--danger-border);border-radius:var(--radius-md);background:var(--grey-0);color:var(--danger);box-shadow:var(--shadow-2);font-size:var(--text-sm);font-weight:var(--weight-medium);display:flex;position:fixed}.board-toast button{color:var(--danger);font-size:var(--text-lg);border-radius:var(--radius-sm);padding:var(--space-1);line-height:1}.board-toast button:hover{background:var(--danger-soft)}@media (width<=980px){.board{grid-template-columns:1fr;height:auto;min-height:0}.app{padding:var(--space-4) var(--space-3) var(--space-8)}.topbar{flex-direction:column;align-items:flex-start;position:static}.column{min-height:420px}.column-list{min-height:120px;overflow-y:visible}.user-actions{justify-content:space-between;width:100%}}:root{--font-sans:-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif;--text-xs:.75rem;--text-sm:.8125rem;--text-base:.875rem;--text-md:1rem;--text-lg:1.25rem;--text-xl:1.75rem;--weight-regular:400;--weight-medium:500;--weight-bold:700;--leading-tight:1.3;--leading-normal:1.5;--tracking-tight:-.02em;--tracking-label:.06em;--tracking-wide:.02em;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-full:999px;--shadow-1:0 1px 2px #1010120f, 0 2px 6px #1010120d;--shadow-2:0 2px 8px #10101214, 0 12px 28px #1010121f;--grey-0:#fff;--grey-1:#f7f7f8;--grey-2:#f2f2f4;--grey-3:#e3e3e7;--grey-4:#d4d4d9;--grey-5:#a0a0aa;--grey-6:#6f6f7a;--grey-7:#40404a;--grey-8:#19191d;--accent:#2e5ddb;--accent-hover:#2450c0;--accent-soft:#2e5ddb14;--on-accent:#fff;--success:#2f7d4f;--success-soft:#e7f3ec;--warning:#9a6a12;--warning-soft:#faf0dd;--danger:#b33a3a;--danger-hover:#9c2f2f;--danger-solid:#b33a3a;--danger-soft:#fbeaea;--danger-border:#b33a3a4d;--on-danger:#fff;--overlay:#1010128c;--tag-border:#10101214;--width-max:1440px;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:var(--font-sans);line-height:var(--leading-normal);font-weight:var(--weight-regular);color:var(--grey-8);background:var(--grey-1);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}:root[data-theme=dark]{--grey-0:#0f0f13;--grey-1:#14141a;--grey-2:#1b1b22;--grey-3:#2a2a33;--grey-4:#3a3a45;--grey-5:#66666f;--grey-6:#9a9aa5;--grey-7:#c9c9d2;--grey-8:#ededf1;--accent:#5b7cff;--accent-hover:#718eff;--accent-soft:#5b7cff24;--on-accent:#0f0f13;--success:#7cc89b;--success-soft:#34a06029;--warning:#ddb06a;--warning-soft:#cd963c29;--danger:#f0a3a3;--danger-hover:#d65f5f;--danger-solid:#c94a4a;--danger-soft:#e0545429;--danger-border:#f0a3a34d;--overlay:#06060899;--tag-border:#ffffff24;--shadow-1:0 1px 2px #0006, 0 2px 6px #0000004d;--shadow-2:0 2px 8px #0006, 0 12px 28px #00000073;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;color:var(--grey-8);background:var(--grey-1)}*{box-sizing:border-box;margin:0;padding:0}html,body,#root{min-height:100%}body{background:var(--grey-1);min-height:100vh;color:var(--grey-8)}button,input,textarea,select{font:inherit;color:inherit}a{color:inherit;text-decoration:none}img{max-width:100%;display:block}button{cursor:pointer;background:0 0;border:none}button:disabled{opacity:.55;cursor:not-allowed}input,textarea,select{width:100%}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}::placeholder{color:var(--grey-5)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}
