.layout[data-v-7eee0b55]{min-height:100vh;display:flex;flex-direction:column}.header[data-v-7eee0b55]{background:var(--surface-container-lowest);border-bottom:1px solid var(--surface-container-high);position:sticky;top:0;z-index:10}.header-inner[data-v-7eee0b55]{max-width:1200px;margin:0 auto;padding:0 1.5rem;height:56px;display:flex;align-items:center;gap:2rem}.logo[data-v-7eee0b55]{display:flex;align-items:center;gap:.5rem;font-weight:600;font-size:var(--headline-sm);color:var(--on-surface);text-decoration:none;flex-shrink:0}.logo[data-v-7eee0b55]:hover{text-decoration:none}.nav[data-v-7eee0b55]{display:flex;align-items:center;gap:.25rem;flex:1}.nav-link[data-v-7eee0b55]{padding:.375rem .75rem;border-radius:var(--radius-md);font-size:var(--body-md);color:var(--on-surface-muted);text-decoration:none;transition:background .15s,color .15s}.nav-link[data-v-7eee0b55]:hover{background:var(--surface-container);text-decoration:none}.nav-link.active[data-v-7eee0b55]{background:var(--surface-container);color:var(--on-surface);font-weight:500}.header-actions[data-v-7eee0b55]{display:flex;align-items:center;gap:.5rem}.main[data-v-7eee0b55]{flex:1;max-width:1200px;width:100%;margin:0 auto;padding:2rem 1.5rem}.btn-ghost[data-v-7eee0b55]{background:none;border:none;color:var(--on-surface-muted);font-size:var(--body-md);padding:.375rem .5rem;border-radius:var(--radius-md);transition:background .15s,color .15s}.btn-ghost[data-v-7eee0b55]:hover{background:var(--surface-container);color:var(--on-surface)}.login-page[data-v-f4a97acb]{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--surface);padding:1.5rem}.login-card[data-v-f4a97acb]{width:100%;max-width:360px;background:var(--surface-container-lowest);border-radius:var(--radius-lg);padding:2rem}.login-header[data-v-f4a97acb]{display:flex;align-items:center;gap:.75rem;margin-bottom:.25rem;color:var(--on-surface)}.login-header h1[data-v-f4a97acb]{font-size:var(--headline-md);font-weight:600}.login-subtitle[data-v-f4a97acb]{color:var(--on-surface-muted);font-size:var(--body-sm);margin-bottom:1.75rem}.login-form[data-v-f4a97acb]{display:flex;flex-direction:column;gap:1rem}.error-banner[data-v-f4a97acb]{background:#c44d4d14;color:var(--danger);padding:.625rem .75rem;border-radius:var(--radius-md);font-size:var(--body-sm)}.field[data-v-f4a97acb]{display:flex;flex-direction:column;gap:.375rem}.input[data-v-f4a97acb]{background:var(--surface);border:1px solid var(--surface-container-high);border-radius:var(--radius-md);padding:.5rem .75rem;font-size:var(--body-md);color:var(--on-surface);transition:border-color .15s,box-shadow .15s;outline:none}.input[data-v-f4a97acb]:focus{border-color:var(--accent);box-shadow:0 0 0 2px #4a6fa526}.input[data-v-f4a97acb]::placeholder{color:var(--on-surface-muted)}.btn-primary[data-v-f4a97acb]{background:var(--accent);color:#fff;border:none;border-radius:var(--radius-md);padding:.5625rem 1rem;font-size:var(--body-md);font-weight:500;transition:background .15s;margin-top:.5rem}.btn-primary[data-v-f4a97acb]:hover:not(:disabled){background:var(--accent-hover)}.btn-primary[data-v-f4a97acb]:disabled{opacity:.6;cursor:not-allowed}.dashboard[data-v-2cbba1db]{display:flex;flex-direction:column;gap:2.5rem}.page-header h1[data-v-2cbba1db]{font-size:var(--display-lg);font-weight:700;color:var(--on-surface)}.section-header[data-v-2cbba1db]{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}.section-header h2[data-v-2cbba1db]{font-size:var(--headline-sm);font-weight:600;color:var(--on-surface)}.loading[data-v-2cbba1db]{color:var(--on-surface-muted);font-size:var(--body-sm);padding:2rem;text-align:center}.empty-state[data-v-2cbba1db]{text-align:center;padding:3rem 1rem;background:var(--surface-container);border-radius:var(--radius-lg)}.empty-state p[data-v-2cbba1db]{color:var(--on-surface-muted);margin-bottom:1rem}.empty-state-subtle[data-v-2cbba1db]{padding:1.5rem;color:var(--on-surface-muted);font-size:var(--body-sm);background:var(--surface-container);border-radius:var(--radius-lg)}.project-grid[data-v-2cbba1db]{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:1rem}.project-card[data-v-2cbba1db]{display:flex;flex-direction:column;gap:.5rem;background:var(--surface-container-lowest);border-radius:var(--radius-lg);padding:1.25rem;text-decoration:none;color:inherit;transition:background .15s;border-left:3px solid transparent}.project-card[data-v-2cbba1db]:hover{text-decoration:none;background:var(--surface-container)}.project-card.overdue[data-v-2cbba1db]{border-left-color:var(--danger)}.project-card-header[data-v-2cbba1db]{display:flex;align-items:flex-start;justify-content:space-between;gap:.5rem}.project-card-header h3[data-v-2cbba1db]{font-size:var(--headline-sm);font-weight:600;color:var(--on-surface)}.project-client[data-v-2cbba1db]{font-size:var(--body-sm);color:var(--on-surface-muted)}.project-deadline[data-v-2cbba1db]{display:flex;align-items:center;gap:.375rem;font-size:var(--label-sm);color:var(--on-surface-muted);text-transform:uppercase;letter-spacing:.04em}.text-danger[data-v-2cbba1db]{color:var(--danger)}.progress-section[data-v-2cbba1db]{margin-top:.25rem;display:flex;align-items:center;gap:.75rem}.progress-track[data-v-2cbba1db]{flex:1;height:6px;background:var(--surface-container);border-radius:var(--radius-pill);overflow:hidden}.progress-fill[data-v-2cbba1db]{height:100%;background:var(--success);border-radius:var(--radius-pill);transition:width .3s ease}.progress-label[data-v-2cbba1db]{font-size:var(--body-sm);color:var(--on-surface-muted);white-space:nowrap}.overdue-list[data-v-2cbba1db]{display:flex;flex-direction:column;gap:.25rem;background:var(--surface-container-lowest);border-radius:var(--radius-lg);overflow:hidden}.overdue-item[data-v-2cbba1db]{display:flex;align-items:center;gap:.75rem;padding:.75rem 1rem;text-decoration:none;color:inherit;transition:background .15s}.overdue-item[data-v-2cbba1db]:hover{background:var(--surface-container);text-decoration:none}.priority-dot[data-v-2cbba1db]{width:8px;height:8px;border-radius:50%;flex-shrink:0}.priority--low[data-v-2cbba1db]{background:var(--on-surface-muted)}.priority--medium[data-v-2cbba1db]{background:var(--warning)}.priority--high[data-v-2cbba1db]{background:var(--danger)}.overdue-item-content[data-v-2cbba1db]{flex:1;display:flex;flex-direction:column;gap:.125rem;min-width:0}.overdue-title[data-v-2cbba1db]{font-size:var(--body-md);color:var(--on-surface);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.overdue-project[data-v-2cbba1db]{font-size:var(--label-sm);color:var(--on-surface-muted)}.badge[data-v-2cbba1db]{display:inline-flex;align-items:center;padding:.125rem .5rem;border-radius:var(--radius-pill);font-size:var(--label-sm);font-weight:500;white-space:nowrap;flex-shrink:0}.badge--active[data-v-2cbba1db]{background:#4a6fa51f;color:var(--accent)}.badge--completed[data-v-2cbba1db]{background:#4d8c5e1f;color:var(--success)}.badge--on-hold[data-v-2cbba1db]{background:#c4923a1f;color:var(--warning)}.badge--danger[data-v-2cbba1db]{background:#c44d4d1f;color:var(--danger)}.btn-ghost-sm[data-v-2cbba1db]{font-size:var(--body-sm);color:var(--accent);text-decoration:none;padding:.25rem .5rem;border-radius:var(--radius-sm);transition:background .15s}.btn-ghost-sm[data-v-2cbba1db]:hover{background:var(--surface-container);text-decoration:none}.btn-secondary-sm[data-v-2cbba1db]{display:inline-flex;align-items:center;font-size:var(--body-sm);color:var(--accent);border:1px solid var(--surface-container-high);background:var(--surface-container-lowest);padding:.375rem .75rem;border-radius:var(--radius-md);text-decoration:none;transition:background .15s}.btn-secondary-sm[data-v-2cbba1db]:hover{background:var(--surface-container);text-decoration:none}.projects-page[data-v-87dd36a1]{display:flex;flex-direction:column;gap:1.5rem}.page-header[data-v-87dd36a1]{display:flex;align-items:center;justify-content:space-between}.page-header h1[data-v-87dd36a1]{font-size:var(--display-lg);font-weight:700}.filters[data-v-87dd36a1]{display:flex;gap:.25rem;background:var(--surface-container);border-radius:var(--radius-md);padding:.25rem;width:fit-content}.filter-btn[data-v-87dd36a1]{background:none;border:none;padding:.375rem .75rem;border-radius:var(--radius-sm);font-size:var(--body-sm);color:var(--on-surface-muted);transition:background .15s,color .15s}.filter-btn[data-v-87dd36a1]:hover{color:var(--on-surface)}.filter-btn.active[data-v-87dd36a1]{background:var(--surface-container-lowest);color:var(--on-surface);font-weight:500}.loading[data-v-87dd36a1]{color:var(--on-surface-muted);font-size:var(--body-sm);padding:2rem;text-align:center}.empty-state[data-v-87dd36a1]{text-align:center;padding:3rem 1rem;background:var(--surface-container);border-radius:var(--radius-lg);color:var(--on-surface-muted)}.project-list[data-v-87dd36a1]{display:flex;flex-direction:column;gap:.25rem;background:var(--surface-container-lowest);border-radius:var(--radius-lg);overflow:hidden}.project-row[data-v-87dd36a1]{display:flex;align-items:center;gap:1rem;padding:.875rem 1.25rem;text-decoration:none;color:inherit;transition:background .15s}.project-row[data-v-87dd36a1]:hover{background:var(--surface-container);text-decoration:none}.project-info[data-v-87dd36a1]{flex:1;min-width:0}.project-info h3[data-v-87dd36a1]{font-size:var(--body-md);font-weight:500;color:var(--on-surface);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.project-client[data-v-87dd36a1]{font-size:var(--label-sm);color:var(--on-surface-muted);text-transform:uppercase;letter-spacing:.04em}.project-meta[data-v-87dd36a1]{display:flex;align-items:center;gap:.75rem;flex-shrink:0}.project-deadline[data-v-87dd36a1]{font-size:var(--body-sm);color:var(--on-surface-muted)}.btn-delete[data-v-87dd36a1]{background:none;border:none;color:var(--on-surface-muted);padding:.25rem;border-radius:var(--radius-sm);opacity:0;transition:opacity .15s,color .15s,background .15s}.project-row:hover .btn-delete[data-v-87dd36a1]{opacity:1}.btn-delete[data-v-87dd36a1]:hover{color:var(--danger);background:#c44d4d14}.badge[data-v-87dd36a1]{display:inline-flex;align-items:center;padding:.125rem .5rem;border-radius:var(--radius-pill);font-size:var(--label-sm);font-weight:500;white-space:nowrap}.badge--active[data-v-87dd36a1]{background:#4a6fa51f;color:var(--accent)}.badge--completed[data-v-87dd36a1]{background:#4d8c5e1f;color:var(--success)}.badge--on-hold[data-v-87dd36a1]{background:#c4923a1f;color:var(--warning)}.btn-primary[data-v-87dd36a1]{display:inline-flex;align-items:center;gap:.375rem;background:var(--accent);color:#fff;border:none;border-radius:var(--radius-md);padding:.5rem 1rem;font-size:var(--body-md);font-weight:500;text-decoration:none;transition:background .15s}.btn-primary[data-v-87dd36a1]:hover{background:var(--accent-hover);text-decoration:none}.project-detail[data-v-73977a0c]{display:flex;flex-direction:column;gap:1.5rem}.loading[data-v-73977a0c]{color:var(--on-surface-muted);padding:2rem;text-align:center}.error-state[data-v-73977a0c]{color:var(--danger);padding:2rem;text-align:center}.page-header[data-v-73977a0c]{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem}.page-header-left[data-v-73977a0c]{display:flex;flex-direction:column;gap:.25rem}.back-link[data-v-73977a0c]{display:inline-flex;align-items:center;gap:.25rem;font-size:var(--body-sm);color:var(--on-surface-muted);text-decoration:none;margin-bottom:.25rem}.back-link[data-v-73977a0c]:hover{color:var(--accent)}.page-header h1[data-v-73977a0c]{font-size:var(--headline-md);font-weight:600}.project-meta-row[data-v-73977a0c]{display:flex;align-items:center;gap:.75rem;margin-top:.25rem}.deadline[data-v-73977a0c]{font-size:var(--label-sm);color:var(--on-surface-muted);text-transform:uppercase;letter-spacing:.04em}.text-danger[data-v-73977a0c]{color:var(--danger)}.page-header-actions[data-v-73977a0c]{display:flex;gap:.5rem;flex-shrink:0}.notes-card[data-v-73977a0c]{background:var(--surface-container);border-radius:var(--radius-lg);padding:1rem 1.25rem}.notes-text[data-v-73977a0c]{font-size:var(--body-sm);color:var(--on-surface-muted);white-space:pre-wrap;line-height:1.6}.progress-card[data-v-73977a0c]{background:var(--surface-container-lowest);border-radius:var(--radius-lg);padding:1rem 1.25rem}.progress-info[data-v-73977a0c]{display:flex;align-items:center;justify-content:space-between;margin-bottom:.5rem}.progress-info h2[data-v-73977a0c]{font-size:var(--headline-sm);font-weight:600}.progress-label[data-v-73977a0c]{font-size:var(--body-sm);color:var(--on-surface-muted)}.progress-track[data-v-73977a0c]{height:6px;background:var(--surface-container);border-radius:var(--radius-pill);overflow:hidden}.progress-fill[data-v-73977a0c]{height:100%;background:var(--success);border-radius:var(--radius-pill);transition:width .3s ease}.task-section[data-v-73977a0c]{display:flex;flex-direction:column;gap:.5rem}.empty-tasks[data-v-73977a0c]{color:var(--on-surface-muted);font-size:var(--body-sm);padding:1rem}.task-list[data-v-73977a0c]{display:flex;flex-direction:column;gap:.25rem;background:var(--surface-container-lowest);border-radius:var(--radius-lg);overflow:hidden}.task-item[data-v-73977a0c]{display:flex;align-items:center;gap:.625rem;padding:.625rem 1rem;transition:background .15s}.task-item[data-v-73977a0c]:hover{background:var(--surface-container)}.task-item.task-done .task-title[data-v-73977a0c]{text-decoration:line-through;color:var(--on-surface-muted)}.task-check[data-v-73977a0c]{background:none;border:1.5px solid var(--surface-container-high);border-radius:var(--radius-sm);width:18px;height:18px;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;color:var(--success);transition:border-color .15s,background .15s}.task-check[data-v-73977a0c]:hover{border-color:var(--success)}.check-empty[data-v-73977a0c]{width:8px;height:8px}.priority-dot[data-v-73977a0c]{width:8px;height:8px;border-radius:50%;flex-shrink:0}.priority--low[data-v-73977a0c]{background:var(--on-surface-muted)}.priority--medium[data-v-73977a0c]{background:var(--warning)}.priority--high[data-v-73977a0c]{background:var(--danger)}.task-content[data-v-73977a0c]{flex:1;display:flex;align-items:center;gap:.5rem;min-width:0}.task-title[data-v-73977a0c]{font-size:var(--body-md);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.task-actions[data-v-73977a0c]{display:flex;gap:.25rem;opacity:0;transition:opacity .15s}.task-item:hover .task-actions[data-v-73977a0c]{opacity:1}.btn-icon[data-v-73977a0c]{background:none;border:none;color:var(--on-surface-muted);padding:.25rem;border-radius:var(--radius-sm);transition:color .15s,background .15s}.btn-icon[data-v-73977a0c]:hover{color:var(--on-surface);background:var(--surface-container)}.btn-icon-danger[data-v-73977a0c]:hover{color:var(--danger);background:#c44d4d14}.btn-add-task[data-v-73977a0c]{display:flex;align-items:center;gap:.375rem;background:none;border:1px dashed var(--surface-container-high);border-radius:var(--radius-lg);padding:.625rem 1rem;color:var(--on-surface-muted);font-size:var(--body-sm);transition:color .15s,border-color .15s;width:100%;justify-content:center}.btn-add-task[data-v-73977a0c]:hover{color:var(--accent);border-color:var(--accent)}.task-form-card[data-v-73977a0c]{background:var(--surface-container-lowest);border-radius:var(--radius-lg);padding:1.25rem}.task-form-card h3[data-v-73977a0c]{font-size:var(--headline-sm);font-weight:600;margin-bottom:1rem}.task-form[data-v-73977a0c]{display:flex;flex-direction:column;gap:.875rem}.form-row[data-v-73977a0c]{display:grid;grid-template-columns:1fr 1fr;gap:.875rem}.field[data-v-73977a0c]{display:flex;flex-direction:column;gap:.375rem}.input[data-v-73977a0c]{background:var(--surface);border:1px solid var(--surface-container-high);border-radius:var(--radius-md);padding:.5rem .75rem;font-size:var(--body-md);color:var(--on-surface);outline:none;transition:border-color .15s,box-shadow .15s}.input[data-v-73977a0c]:focus{border-color:var(--accent);box-shadow:0 0 0 2px #4a6fa526}.form-actions[data-v-73977a0c]{display:flex;justify-content:flex-end;gap:.5rem}.badge[data-v-73977a0c]{display:inline-flex;align-items:center;padding:.125rem .5rem;border-radius:var(--radius-pill);font-size:var(--label-sm);font-weight:500;white-space:nowrap}.badge--active[data-v-73977a0c]{background:#4a6fa51f;color:var(--accent)}.badge--completed[data-v-73977a0c]{background:#4d8c5e1f;color:var(--success)}.badge--on-hold[data-v-73977a0c]{background:#c4923a1f;color:var(--warning)}.btn-primary[data-v-73977a0c]{background:var(--accent);color:#fff;border:none;border-radius:var(--radius-md);padding:.5rem 1rem;font-size:var(--body-md);font-weight:500;transition:background .15s}.btn-primary[data-v-73977a0c]:hover:not(:disabled){background:var(--accent-hover)}.btn-primary[data-v-73977a0c]:disabled{opacity:.6;cursor:not-allowed}.btn-secondary[data-v-73977a0c]{background:var(--surface-container-lowest);color:var(--on-surface);border:1px solid var(--surface-container-high);border-radius:var(--radius-md);padding:.5rem 1rem;font-size:var(--body-md);transition:background .15s}.btn-secondary[data-v-73977a0c]:hover{background:var(--surface-container)}.btn-danger[data-v-73977a0c]{background:none;border:none;color:var(--danger);font-size:var(--body-md);padding:.5rem;border-radius:var(--radius-md);transition:background .15s}.btn-danger[data-v-73977a0c]:hover{background:#c44d4d14}.project-form-page[data-v-0ce56fb1]{max-width:560px;display:flex;flex-direction:column;gap:1.5rem}.page-header[data-v-0ce56fb1]{display:flex;flex-direction:column;gap:.25rem}.page-header h1[data-v-0ce56fb1]{font-size:var(--headline-md);font-weight:600}.back-link[data-v-0ce56fb1]{display:inline-flex;align-items:center;gap:.25rem;font-size:var(--body-sm);color:var(--on-surface-muted);text-decoration:none;margin-bottom:.25rem}.back-link[data-v-0ce56fb1]:hover{color:var(--accent)}.form-card[data-v-0ce56fb1]{background:var(--surface-container-lowest);border-radius:var(--radius-lg);padding:1.5rem;display:flex;flex-direction:column;gap:1.125rem}.error-banner[data-v-0ce56fb1]{background:#c44d4d14;color:var(--danger);padding:.625rem .75rem;border-radius:var(--radius-md);font-size:var(--body-sm)}.field[data-v-0ce56fb1]{display:flex;flex-direction:column;gap:.375rem}.input[data-v-0ce56fb1]{background:var(--surface);border:1px solid var(--surface-container-high);border-radius:var(--radius-md);padding:.5rem .75rem;font-size:var(--body-md);color:var(--on-surface);outline:none;transition:border-color .15s,box-shadow .15s}.input[data-v-0ce56fb1]:focus{border-color:var(--accent);box-shadow:0 0 0 2px #4a6fa526}.input-textarea[data-v-0ce56fb1]{resize:vertical;min-height:80px;line-height:1.6}.form-actions[data-v-0ce56fb1]{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.5rem}.btn-primary[data-v-0ce56fb1]{background:var(--accent);color:#fff;border:none;border-radius:var(--radius-md);padding:.5rem 1rem;font-size:var(--body-md);font-weight:500;transition:background .15s}.btn-primary[data-v-0ce56fb1]:hover:not(:disabled){background:var(--accent-hover)}.btn-primary[data-v-0ce56fb1]:disabled{opacity:.6;cursor:not-allowed}.btn-secondary[data-v-0ce56fb1]{display:inline-flex;align-items:center;background:var(--surface-container-lowest);color:var(--on-surface);border:1px solid var(--surface-container-high);border-radius:var(--radius-md);padding:.5rem 1rem;font-size:var(--body-md);text-decoration:none;transition:background .15s}.btn-secondary[data-v-0ce56fb1]:hover{background:var(--surface-container);text-decoration:none}.not-found[data-v-c9b1e448]{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:60vh;gap:.5rem;text-align:center}.not-found h1[data-v-c9b1e448]{font-size:4rem;font-weight:700;color:var(--on-surface-muted)}.not-found p[data-v-c9b1e448]{color:var(--on-surface-muted);margin-bottom:1rem}.btn-ghost[data-v-c9b1e448]{color:var(--accent);font-size:var(--body-md);text-decoration:none;padding:.5rem .75rem;border-radius:var(--radius-md);transition:background .15s}.btn-ghost[data-v-c9b1e448]:hover{background:var(--surface-container);text-decoration:none}:root{--surface: #f8f7f4;--surface-container: #efeeeb;--surface-container-high: #e4e3df;--surface-container-lowest: #ffffff;--on-surface: #1c1c1c;--on-surface-muted: #6b6965;--accent: #4a6fa5;--accent-hover: #3a5a8a;--danger: #c44d4d;--warning: #c4923a;--success: #4d8c5e;--font-family: "Inter", system-ui, -apple-system, sans-serif;--display-lg: 2rem;--headline-md: 1.5rem;--headline-sm: 1.125rem;--body-md: .875rem;--body-sm: .8125rem;--label-sm: .6875rem;--radius-sm: 4px;--radius-md: 6px;--radius-lg: 8px;--radius-pill: 999px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-family);font-size:var(--body-md);line-height:1.5;color:var(--on-surface);background:var(--surface);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}input,select,textarea{font-family:inherit;font-size:inherit}button{font-family:inherit;cursor:pointer}.label{font-size:var(--label-sm);font-weight:500;text-transform:uppercase;letter-spacing:.04em;color:var(--on-surface-muted)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}