.layout[data-v-673f6b28]{min-height:100dvh;display:flex;flex-direction:column}.topbar[data-v-673f6b28]{display:flex;align-items:center;justify-content:space-between;padding:var(--space-md) var(--space-xl);background:var(--card);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:10}.logo[data-v-673f6b28]{display:flex;align-items:center;gap:var(--space-sm);font-weight:600;font-size:1.125rem}.desktop-nav[data-v-673f6b28]{display:flex;gap:var(--space-sm)}.nav-link[data-v-673f6b28]{display:flex;align-items:center;gap:var(--space-xs);padding:var(--space-sm) var(--space-md);border-radius:var(--radius-md);font-size:.875rem;font-weight:500;color:var(--muted);transition:all var(--transition)}.nav-link[data-v-673f6b28]:hover{background:var(--bg);color:var(--ink)}.nav-link.active[data-v-673f6b28]{color:var(--ink);background:var(--bg)}.main-content[data-v-673f6b28]{flex:1;padding:var(--space-xl);max-width:64rem;width:100%;margin:0 auto}.mobile-nav[data-v-673f6b28]{display:none;position:fixed;bottom:0;left:0;right:0;background:var(--card);border-top:1px solid var(--border);padding:var(--space-xs) 0;padding-bottom:calc(var(--space-xs) + env(safe-area-inset-bottom));z-index:10}.mobile-nav-link[data-v-673f6b28]{display:flex;flex-direction:column;align-items:center;gap:2px;flex:1;padding:var(--space-xs) 0;font-size:.6875rem;font-weight:500;color:var(--muted);transition:color var(--transition)}.mobile-nav-link.active[data-v-673f6b28]{color:var(--ink)}@media(max-width:768px){.desktop-nav[data-v-673f6b28]{display:none}.mobile-nav[data-v-673f6b28]{display:flex}.main-content[data-v-673f6b28]{padding:var(--space-md);padding-bottom:calc(var(--space-2xl) + env(safe-area-inset-bottom))}}.project-form[data-v-378e1815]{display:flex;flex-direction:column;gap:var(--space-md)}.field[data-v-378e1815]{display:flex;flex-direction:column;gap:var(--space-xs)}label[data-v-378e1815]{font-size:.8125rem;font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}input[type=text][data-v-378e1815],input[type=number][data-v-378e1815]{padding:var(--space-sm) var(--space-md);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg);font-size:1rem;transition:border-color var(--transition)}input[type=text][data-v-378e1815]:focus,input[type=number][data-v-378e1815]:focus{border-color:var(--ink)}.color-row[data-v-378e1815]{display:flex;gap:var(--space-sm);align-items:center;flex-wrap:wrap}.color-swatch[data-v-378e1815]{width:28px;height:28px;border-radius:var(--radius-sm);border:2px solid transparent;transition:border-color var(--transition);cursor:pointer}.color-swatch.active[data-v-378e1815]{border-color:var(--ink)}.color-picker[data-v-378e1815]{width:28px;height:28px;padding:0;border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;background:none}.btn[data-v-378e1815]{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-md);font-weight:500;font-size:.9375rem;transition:all var(--transition)}.btn-primary[data-v-378e1815]{background:var(--timer-green);color:#fff}.btn-primary[data-v-378e1815]:hover:not(:disabled){opacity:.9}.btn[data-v-378e1815]:disabled{opacity:.5;cursor:not-allowed}.progress-track[data-v-3bc0955a]{height:6px;background:var(--border);border-radius:999px;overflow:hidden}.progress-fill[data-v-3bc0955a]{height:100%;border-radius:999px;transition:width .3s ease}.home-view[data-v-e34fd1d2]{display:flex;flex-direction:column;gap:var(--space-xl)}.page-header[data-v-e34fd1d2]{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-md)}h1[data-v-e34fd1d2]{font-size:1.5rem;font-weight:600;line-height:1.2}.subtitle[data-v-e34fd1d2]{color:var(--muted);font-size:.875rem;margin-top:var(--space-xs)}.form-card[data-v-e34fd1d2]{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-md)}.form-card h2[data-v-e34fd1d2]{font-size:1.125rem;font-weight:600}.btn[data-v-e34fd1d2]{display:inline-flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-md);font-weight:500;font-size:.9375rem;transition:all var(--transition);white-space:nowrap}.btn-primary[data-v-e34fd1d2]{background:var(--timer-green);color:#fff}.btn-primary[data-v-e34fd1d2]:hover:not(:disabled){opacity:.9}.btn-secondary[data-v-e34fd1d2]{background:var(--card);border:1px solid var(--border);color:var(--ink)}.btn-secondary[data-v-e34fd1d2]:hover{background:var(--bg)}.btn-ghost[data-v-e34fd1d2]{color:var(--muted);padding:var(--space-sm)}.btn-ghost[data-v-e34fd1d2]:hover{color:var(--ink);background:var(--bg)}.empty-state[data-v-e34fd1d2]{text-align:center;padding:var(--space-2xl) var(--space-xl);color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:var(--space-md)}.empty-state svg[data-v-e34fd1d2]{opacity:.3;width:48px;height:48px}.projects-grid[data-v-e34fd1d2]{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--space-md)}.project-card[data-v-e34fd1d2]{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-lg);cursor:pointer;transition:all var(--transition)}.project-card[data-v-e34fd1d2]:hover{box-shadow:0 1px 3px #00000014}.project-card.is-running[data-v-e34fd1d2]{border-color:var(--timer-green)}.card-header[data-v-e34fd1d2]{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-sm)}.project-identity[data-v-e34fd1d2]{display:flex;align-items:center;gap:var(--space-sm);min-width:0}.color-dot[data-v-e34fd1d2]{width:10px;height:10px;border-radius:50%;flex-shrink:0}.project-identity h3[data-v-e34fd1d2]{font-size:1rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.running-badge[data-v-e34fd1d2]{width:8px;height:8px;border-radius:50%;background:var(--timer-green);flex-shrink:0;animation:blink-e34fd1d2 1.5s ease-in-out infinite}@keyframes blink-e34fd1d2{0%,to{opacity:1}50%{opacity:.3}}.card-actions[data-v-e34fd1d2]{display:flex;gap:var(--space-xs);flex-shrink:0}.icon-btn[data-v-e34fd1d2]{padding:var(--space-xs);border-radius:var(--radius-sm);color:var(--muted);transition:all var(--transition)}.icon-btn[data-v-e34fd1d2]:hover{color:var(--ink);background:var(--bg)}.icon-btn.danger[data-v-e34fd1d2]:hover{color:var(--stop-red);background:#ef444414}.card-stats[data-v-e34fd1d2]{display:flex;align-items:baseline;gap:var(--space-sm);margin-top:var(--space-md)}.hours[data-v-e34fd1d2]{font-family:var(--mono-nums);font-variant-numeric:tabular-nums;font-weight:600;font-size:1.25rem}.goal[data-v-e34fd1d2]{font-size:.8125rem;color:var(--muted)}.loading[data-v-e34fd1d2]{text-align:center;padding:var(--space-2xl);color:var(--muted)}@media(max-width:768px){.page-header[data-v-e34fd1d2]{flex-direction:column}.projects-grid[data-v-e34fd1d2]{grid-template-columns:1fr}}.timer-display[data-v-880992e1]{text-align:center;padding:var(--space-2xl) 0}.timer-value[data-v-880992e1]{font-family:var(--mono-nums);font-weight:700;font-size:4rem;line-height:1;font-variant-numeric:tabular-nums;letter-spacing:-.02em}.timer-label[data-v-880992e1]{margin-top:var(--space-sm);font-size:.8125rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.timer-display.running .timer-value[data-v-880992e1]{animation:pulse-880992e1 2s ease-in-out infinite}@keyframes pulse-880992e1{0%,to{opacity:1}50%{opacity:.7}}.session-log[data-v-330120d4]{display:flex;flex-direction:column;gap:var(--space-xs)}.empty[data-v-330120d4]{padding:var(--space-xl);text-align:center;color:var(--muted);font-size:.875rem}.session-row[data-v-330120d4]{display:flex;flex-direction:column;gap:2px;padding:var(--space-sm) var(--space-md);border-radius:var(--radius-sm);transition:background var(--transition)}.session-row[data-v-330120d4]:hover{background:var(--bg)}.session-info[data-v-330120d4]{display:flex;align-items:baseline;gap:var(--space-md)}.session-date[data-v-330120d4]{font-size:.8125rem;color:var(--muted);font-weight:500}.session-duration[data-v-330120d4]{font-family:var(--mono-nums);font-variant-numeric:tabular-nums;font-weight:600;font-size:.9375rem}.session-meta[data-v-330120d4]{display:flex;align-items:center;gap:var(--space-sm);font-size:.8125rem;color:var(--muted);padding-left:var(--space-md)}.session-desc.muted[data-v-330120d4]{font-style:italic}.session-time[data-v-330120d4]{margin-left:auto;font-family:var(--mono-nums);font-variant-numeric:tabular-nums;font-size:.75rem}.badge[data-v-330120d4]{font-size:.6875rem;font-weight:500;text-transform:uppercase;letter-spacing:.04em;padding:1px 6px;border-radius:var(--radius-sm);background:var(--bg);color:var(--muted)}.delete-btn[data-v-330120d4]{color:var(--muted);padding:2px;border-radius:var(--radius-sm);opacity:0;transition:all var(--transition)}.session-row:hover .delete-btn[data-v-330120d4]{opacity:1}.delete-btn[data-v-330120d4]:hover{color:var(--stop-red);background:#ef444414}.project-view[data-v-6f74613b]{display:flex;flex-direction:column;gap:var(--space-xl)}.project-header[data-v-6f74613b]{display:flex;gap:var(--space-lg)}.back-btn[data-v-6f74613b]{padding:var(--space-sm);border-radius:var(--radius-md);color:var(--muted);transition:all var(--transition);margin-top:2px}.back-btn[data-v-6f74613b]:hover{color:var(--ink);background:var(--bg)}.header-info[data-v-6f74613b]{flex:1;min-width:0}.header-title[data-v-6f74613b]{display:flex;align-items:center;gap:var(--space-sm)}.color-dot[data-v-6f74613b]{width:12px;height:12px;border-radius:50%;flex-shrink:0}h1[data-v-6f74613b]{font-size:1.5rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header-stats[data-v-6f74613b]{display:flex;align-items:baseline;gap:var(--space-sm);margin-top:var(--space-sm)}.hours[data-v-6f74613b]{font-family:var(--mono-nums);font-variant-numeric:tabular-nums;font-weight:600;font-size:1.25rem}.goal[data-v-6f74613b]{font-size:.8125rem;color:var(--muted)}.timer-section[data-v-6f74613b]{display:flex;flex-direction:column;align-items:center;gap:var(--space-md)}.timer-description input[data-v-6f74613b]{width:100%;max-width:320px;padding:var(--space-sm) var(--space-md);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg);text-align:center;font-size:.9375rem}.timer-description input[data-v-6f74613b]:focus{border-color:var(--ink)}.timer-actions[data-v-6f74613b]{display:flex;gap:var(--space-sm)}.btn[data-v-6f74613b]{display:inline-flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-md);font-weight:500;font-size:.9375rem;transition:all var(--transition);white-space:nowrap}.btn-start[data-v-6f74613b]{background:var(--timer-green);color:#fff;font-size:1.125rem;padding:var(--space-md) var(--space-xl);border-radius:var(--radius-lg)}.btn-start[data-v-6f74613b]:hover{opacity:.9}.btn-stop[data-v-6f74613b]{background:var(--stop-red);color:#fff;font-size:1.125rem;padding:var(--space-md) var(--space-xl);border-radius:var(--radius-lg)}.btn-stop[data-v-6f74613b]:hover{opacity:.9}.btn-ghost[data-v-6f74613b]{color:var(--muted);padding:var(--space-sm)}.btn-ghost[data-v-6f74613b]:hover{color:var(--ink);background:var(--bg)}.btn-primary[data-v-6f74613b]{background:var(--timer-green);color:#fff}.btn-primary[data-v-6f74613b]:hover:not(:disabled){opacity:.9}.sessions-section[data-v-6f74613b]{display:flex;flex-direction:column;gap:var(--space-md)}.section-header[data-v-6f74613b]{display:flex;align-items:center;justify-content:space-between}h2[data-v-6f74613b]{font-size:1.125rem;font-weight:600}.manual-form[data-v-6f74613b]{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-md)}.manual-row[data-v-6f74613b]{display:flex;gap:var(--space-md)}.manual-field[data-v-6f74613b]{display:flex;flex-direction:column;gap:var(--space-xs);flex:1}.manual-field label[data-v-6f74613b]{font-size:.8125rem;font-weight:500;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.manual-field input[data-v-6f74613b]{padding:var(--space-sm) var(--space-md);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--bg)}.manual-field input[data-v-6f74613b]:focus{border-color:var(--ink)}.manual-actions[data-v-6f74613b]{display:flex;gap:var(--space-sm)}@media(max-width:768px){.manual-row[data-v-6f74613b]{flex-direction:column}}.dashboard-view[data-v-9e441e03]{display:flex;flex-direction:column;gap:var(--space-xl)}.page-header[data-v-9e441e03]{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-md)}h1[data-v-9e441e03]{font-size:1.5rem;font-weight:600}.subtitle[data-v-9e441e03]{color:var(--muted);font-size:.875rem;margin-top:var(--space-xs)}.total-badge[data-v-9e441e03]{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-md) var(--space-lg);text-align:center}.total-value[data-v-9e441e03]{font-family:var(--mono-nums);font-variant-numeric:tabular-nums;font-weight:700;font-size:1.5rem;display:block}.total-label[data-v-9e441e03]{font-size:.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.card[data-v-9e441e03]{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-lg)}.card h2[data-v-9e441e03]{font-size:1.125rem;font-weight:600;margin-bottom:var(--space-lg)}.bar-chart.vertical[data-v-9e441e03]{display:flex;align-items:flex-end;gap:var(--space-sm);height:180px;padding-top:var(--space-md)}.bar-col[data-v-9e441e03]{flex:1;display:flex;flex-direction:column;align-items:center;height:100%;gap:var(--space-xs)}.bar-value[data-v-9e441e03]{font-family:var(--mono-nums);font-variant-numeric:tabular-nums;font-size:.6875rem;color:var(--muted);white-space:nowrap}.bar-track[data-v-9e441e03]{flex:1;width:100%;max-width:48px;background:var(--bg);border-radius:var(--radius-sm);display:flex;flex-direction:column;justify-content:flex-end;overflow:hidden}.bar-fill[data-v-9e441e03]{background:var(--timer-green);border-radius:var(--radius-sm);transition:height .3s ease;min-height:2px}.bar-label[data-v-9e441e03]{font-size:.75rem;font-weight:500;color:var(--muted)}.project-bars[data-v-9e441e03]{display:flex;flex-direction:column;gap:var(--space-md)}.project-bar-row[data-v-9e441e03]{display:flex;flex-direction:column;gap:var(--space-xs)}.bar-info[data-v-9e441e03]{display:flex;align-items:center;gap:var(--space-sm)}.color-dot[data-v-9e441e03]{width:8px;height:8px;border-radius:50%;flex-shrink:0}.bar-name[data-v-9e441e03]{font-size:.875rem;font-weight:500;flex:1}.bar-hours[data-v-9e441e03]{font-family:var(--mono-nums);font-variant-numeric:tabular-nums;font-size:.875rem;font-weight:600}.empty[data-v-9e441e03]{text-align:center;padding:var(--space-lg);color:var(--muted);font-size:.875rem}.loading[data-v-9e441e03]{text-align:center;padding:var(--space-2xl);color:var(--muted)}@media(max-width:768px){.page-header[data-v-9e441e03]{flex-direction:column}.bar-chart.vertical[data-v-9e441e03]{height:140px}}.reports-view[data-v-569517dc]{display:flex;flex-direction:column;gap:var(--space-xl)}.page-header[data-v-569517dc]{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-md)}h1[data-v-569517dc]{font-size:1.5rem;font-weight:600}.subtitle[data-v-569517dc]{color:var(--muted);font-size:.875rem;margin-top:var(--space-xs)}.total-badge[data-v-569517dc]{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-md) var(--space-lg);text-align:center}.total-value[data-v-569517dc]{font-family:var(--mono-nums);font-variant-numeric:tabular-nums;font-weight:700;font-size:1.5rem;display:block}.total-label[data-v-569517dc]{font-size:.75rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.card[data-v-569517dc]{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-lg)}.card h2[data-v-569517dc]{font-size:1.125rem;font-weight:600;margin-bottom:var(--space-lg)}.report-bars[data-v-569517dc]{display:flex;flex-direction:column;gap:var(--space-md)}.report-row[data-v-569517dc]{display:grid;grid-template-columns:140px 1fr 80px;align-items:center;gap:var(--space-md)}.report-label[data-v-569517dc]{display:flex;align-items:center;gap:var(--space-sm);min-width:0}.color-dot[data-v-569517dc]{width:8px;height:8px;border-radius:50%;flex-shrink:0}.report-name[data-v-569517dc]{font-size:.875rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.report-bar-track[data-v-569517dc]{height:24px;background:var(--bg);border-radius:var(--radius-sm);overflow:hidden}.report-bar-fill[data-v-569517dc]{height:100%;border-radius:var(--radius-sm);transition:width .3s ease;min-width:2px}.report-hours[data-v-569517dc]{font-family:var(--mono-nums);font-variant-numeric:tabular-nums;font-size:.875rem;font-weight:600;text-align:right}.empty[data-v-569517dc]{text-align:center;padding:var(--space-lg);color:var(--muted);font-size:.875rem}.loading[data-v-569517dc]{text-align:center;padding:var(--space-2xl);color:var(--muted)}@media(max-width:768px){.page-header[data-v-569517dc]{flex-direction:column}.report-row[data-v-569517dc]{grid-template-columns:1fr;gap:var(--space-xs)}.report-bar-track[data-v-569517dc]{order:3;height:8px}.report-hours[data-v-569517dc]{text-align:left;order:2}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #fafaf8;--card: #ffffff;--ink: #1a1a1a;--muted: #6b7280;--border: #e5e7eb;--timer-green: #10b981;--stop-red: #ef4444;--warning-amber: #f59e0b;--font: "Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--mono-nums: "Inter", ui-monospace, monospace;--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.25rem;--space-xl: 2rem;--space-2xl: 3rem;--radius-sm: 6px;--radius-md: 8px;--radius-lg: 10px;--transition: .2s ease}body{font-family:var(--font);background:var(--bg);color:var(--ink);font-size:1rem;line-height:1.5;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer;border:none;background:none}input,textarea,select{font:inherit;border:none;outline:none;background:none}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
