#root,body,html{height:100%;width:100%}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#fff;color:#1f2937;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}@media (prefers-color-scheme:dark){body{background-color:#111827;color:#f9fafb}}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.top-bar{background-color:#fff;border-bottom:1px solid #e5e7eb;position:-webkit-sticky;position:sticky;top:0;z-index:100}@media (prefers-color-scheme:dark){.top-bar{background-color:#1f2937;border-bottom-color:#374151}}.top-bar-content{align-items:center;display:flex;justify-content:space-between;margin:0 auto;max-width:1400px;padding:.75rem 2rem}.hamburger-btn{align-items:center;background:none;border:none;color:#374151;cursor:pointer;display:flex;justify-content:center;padding:.5rem;transition:color .2s}.hamburger-btn:hover{color:#111827}@media (prefers-color-scheme:dark){.hamburger-btn{color:#d1d5db}.hamburger-btn:hover{color:#f9fafb}}.app-name{color:#111827;flex:1 1;font-size:2.5rem;font-weight:400;margin:0}@media (prefers-color-scheme:dark){.app-name{color:#f9fafb}}.user-section{align-items:center;display:flex;gap:.75rem}.user-avatar{border:2px solid #0000;border-radius:50%;cursor:pointer;height:2rem;object-fit:cover;transition:all .2s;width:2rem}.user-avatar.active{border-color:#10b981}.user-avatar.expiring{animation:pulse-border 2s infinite;border-color:#f59e0b}.user-avatar.expired{animation:pulse-border 1s infinite;border-color:#ef4444}@keyframes pulse-border{0%,to{border-opacity:1}50%{border-opacity:.5}}.user-avatar:hover{opacity:.8}.user-avatar-placeholder{align-items:center;background-color:#3b82f6;border:2px solid #0000;border-radius:50%;color:#fff;cursor:pointer;display:flex;font-weight:600;height:2rem;justify-content:center;transition:all .2s;width:2rem}.user-avatar-placeholder.active{border-color:#10b981}.user-avatar-placeholder.expiring{animation:pulse-border 2s infinite;border-color:#f59e0b}.user-avatar-placeholder.expired{animation:pulse-border 1s infinite;border-color:#ef4444}.user-avatar-placeholder:hover{background-color:#2563eb}.logout-btn{align-items:center;background:none;border:none;color:#374151;cursor:pointer;display:flex;padding:.5rem;transition:color .2s}.logout-btn:hover{color:#ef4444}@media (prefers-color-scheme:dark){.logout-btn{color:#d1d5db}.logout-btn:hover{color:#f87171}}.nav-menu{background-color:#fff;border-bottom:1px solid #e5e7eb;box-shadow:0 4px 6px -1px #0000001a;left:0;position:fixed;right:0;top:4.5rem;z-index:90}@media (prefers-color-scheme:dark){.nav-menu{background-color:#1f2937;border-bottom-color:#374151}}.nav-menu-content{display:flex;flex-direction:column;gap:.5rem;margin:0 auto;max-width:1400px;padding:1rem 2rem}.nav-item{align-items:center;border-radius:.375rem;color:#374151;display:flex;font-weight:500;gap:.75rem;padding:.75rem 1rem;text-decoration:none;transition:all .2s}.nav-item:hover{background-color:#f3f4f6;color:#111827}.nav-item.active{background-color:#eff6ff;color:#3b82f6}@media (prefers-color-scheme:dark){.nav-item{color:#d1d5db}.nav-item:hover{background-color:#374151;color:#f9fafb}.nav-item.active{background-color:#1e3a8a;color:#60a5fa}}@media (max-width:768px){.top-bar-content{padding:1rem}.app-name{font-size:1.25rem}.nav-menu-content{padding:1rem}}@media print{.nav-menu,.top-bar{display:none!important}}.dashboard{background-color:#fff;min-height:100vh}@media (prefers-color-scheme:dark){.dashboard{background-color:#111827}}.timer-bar{background-color:#fff;padding:1.5rem 2rem;width:100%}@media (prefers-color-scheme:dark){.timer-bar{background-color:#111827}}.timer-bar-content{align-items:center;display:flex;gap:1.5rem;justify-content:space-between;margin:0 auto;max-width:1280px}.task-input-wrapper{display:flex;flex:1 1;justify-content:center;position:relative}.task-input{background-color:#fff;border:1px solid #d1d5db;border-radius:.5rem;color:#111827;font-size:1.125rem;max-width:48rem;outline:none;padding:1rem 1.5rem;text-align:center;transition:all .2s;width:100%}.task-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.task-input:disabled{background-color:#f3f4f6;cursor:not-allowed}.task-input::placeholder{color:#9ca3af}.search-suggestions{background-color:#fff;border:1px solid #d1d5db;border-radius:.5rem;box-shadow:0 4px 12px #0000001a;left:50%;margin-top:.5rem;max-height:300px;max-width:48rem;overflow-y:auto;position:absolute;top:100%;transform:translateX(-50%);width:100%;z-index:1000}.modal-content .search-suggestions{left:0;max-width:100%;transform:none}.search-suggestion-item{border-bottom:1px solid #e5e7eb;cursor:pointer;padding:.75rem 1rem;text-align:left;transition:background-color .2s}.search-suggestion-item:last-child{border-bottom:none}.search-suggestion-item:hover{background-color:#f3f4f6}.suggestion-description{color:#111827;font-size:.9375rem;font-weight:500;margin-bottom:.25rem}.suggestion-project{color:#6b7280;font-size:.8125rem}@media (prefers-color-scheme:dark){.task-input{background-color:#1f2937;border-color:#4b5563;color:#f9fafb}.task-input:focus{border-color:#3b82f6}.task-input:disabled{background-color:#1f2937}.task-input::placeholder{color:#6b7280}.search-suggestions{background-color:#1f2937;border-color:#4b5563;box-shadow:0 4px 12px #0000004d}.search-suggestion-item{border-bottom-color:#374151}.search-suggestion-item:hover{background-color:#374151}.suggestion-description{color:#f9fafb}.suggestion-project{color:#9ca3af}}.timer-controls{align-items:center;display:flex;flex-shrink:0;gap:1rem}.timer-display{color:#111827;font-family:Courier New,monospace;font-size:1.875rem;font-weight:700;min-width:140px;text-align:right}.timer-display.clickable{cursor:pointer;transition:color .2s}.timer-display.clickable:hover{color:#3b82f6}@media (prefers-color-scheme:dark){.timer-display{color:#f9fafb}.timer-display.clickable:hover{color:#60a5fa}}.timer-btn{align-items:center;border:none;border-radius:.5rem;cursor:pointer;display:flex;height:64px;justify-content:center;padding:1rem;transition:all .2s;width:64px}.timer-btn-start{background-color:#10b981;color:#fff}.timer-btn-start:hover{background-color:#059669}.timer-btn-stop{background-color:#ef4444;color:#fff}.timer-btn-stop:hover{background-color:#dc2626}.timer-btn:disabled{cursor:not-allowed;opacity:.6}.timer-btn.loading{opacity:.8}.loading-spinner{border:3px solid #0000;border-top-color:currentcolor;height:32px;width:32px}.project-btn{align-items:center;background-color:#fff;border:1px solid #d1d5db;border-radius:.5rem;color:#374151;cursor:pointer;display:flex;font-size:1.5rem;font-weight:500;gap:.5rem;padding:.5rem .75rem;transition:all .2s;white-space:nowrap}.project-btn:hover{background-color:#f9fafb;border-color:#9ca3af}.project-btn:disabled{cursor:not-allowed;opacity:.5}.project-name{max-width:150px;overflow:hidden;text-overflow:ellipsis}@media (prefers-color-scheme:dark){.project-btn{background-color:#1f2937;border-color:#4b5563;color:#e5e7eb}.project-btn:hover{background-color:#374151;border-color:#6b7280}}.content-area{color:#6b7280;margin:0 auto;max-width:1280px;padding:2rem}@media (prefers-color-scheme:dark){.content-area{color:#9ca3af}}.view-header{align-items:center;display:flex;gap:1rem;justify-content:flex-end;margin-bottom:.75rem;min-height:2rem}.view-toggle{background-color:#f3f4f6;border-radius:.5rem;padding:.25rem}.view-toggle,.week-nav{align-items:center;display:flex;gap:.25rem}.week-nav{margin-left:auto}@media (prefers-color-scheme:dark){.view-toggle{background-color:#374151}}.view-toggle-btn{align-items:center;background-color:initial;border:none;border-radius:.375rem;color:#6b7280;cursor:pointer;display:flex;justify-content:center;padding:.5rem;transition:all .2s}.view-toggle-btn:hover{color:#111827}.view-toggle-btn.active{background-color:#fff;box-shadow:0 1px 3px #0000001a;color:#3b82f6}@media (prefers-color-scheme:dark){.view-toggle-btn{color:#9ca3af}.view-toggle-btn:hover{color:#f9fafb}.view-toggle-btn.active{background-color:#1f2937;color:#60a5fa}}.timer-list{gap:1.5rem}.timer-day-group,.timer-list{display:flex;flex-direction:column}.timer-day-group{gap:.5rem}.day-header{color:#6b7280;font-size:.875rem;font-weight:600;letter-spacing:.05em;margin-bottom:.25rem;padding:.5rem .75rem;text-transform:uppercase}@media (prefers-color-scheme:dark){.day-header{color:#9ca3af}}.timer-entry{background-color:#fff;border:1px solid #e5e7eb;border-radius:.375rem;padding:.625rem 1rem;transition:all .2s}.timer-entry:hover{border-color:#d1d5db;box-shadow:0 2px 8px #0000001a}.ghost-timer{animation:pulse 2s ease-in-out infinite;border-style:dashed!important;opacity:.7}@keyframes pulse{0%,to{opacity:.7}50%{opacity:.5}}@media (prefers-color-scheme:dark){.timer-entry{background-color:#1f2937;border-color:#374151}.timer-entry:hover{border-color:#4b5563;box-shadow:0 2px 8px #0000004d}}.timer-entry-main{align-items:center;display:flex;gap:1.5rem}.timer-entry-time{color:#6b7280;font-family:Courier New,monospace;font-size:.8125rem;min-width:110px;text-align:left}@media (prefers-color-scheme:dark){.timer-entry-time{color:#9ca3af}}.timer-entry-description{flex:1 1;min-width:0;text-align:left}.entry-description{color:#111827;font-size:.9375rem;font-weight:500;margin-bottom:.125rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.entry-project{border:1px solid;border-radius:.25rem;display:inline-block;font-size:.75rem;font-weight:500;padding:.125rem .5rem;width:-webkit-fit-content;width:fit-content}@media (prefers-color-scheme:dark){.entry-description{color:#f9fafb}}.timer-entry-duration{color:#3b82f6;font-family:Courier New,monospace;font-size:1rem;font-weight:600;min-width:80px;text-align:right}@media (prefers-color-scheme:dark){.timer-entry-duration{color:#60a5fa}}.timer-entry-actions{align-items:center;display:flex;gap:.25rem;justify-content:flex-end;min-width:70px}.timer-action-btn{align-items:center;background-color:initial;border:none;border-radius:.375rem;cursor:pointer;display:flex;justify-content:center;padding:.375rem;transition:all .2s}.timer-start-btn{color:#10b981}.timer-start-btn:hover{background-color:#d1fae5;color:#059669}@media (prefers-color-scheme:dark){.timer-start-btn{color:#34d399}.timer-start-btn:hover{background-color:#064e3b;color:#6ee7b7}}.timer-menu-btn{align-items:center;background-color:initial;border:none;border-radius:.375rem;color:#6b7280;cursor:pointer;display:flex;justify-content:center;padding:.375rem;transition:all .2s}.timer-menu-btn:hover{background-color:#f3f4f6;color:#111827}@media (prefers-color-scheme:dark){.timer-menu-btn{color:#9ca3af}.timer-menu-btn:hover{background-color:#374151;color:#f9fafb}}.timer-menu-popup{background-color:#fff;border:1px solid #e5e7eb;border-radius:.5rem;box-shadow:0 4px 12px #00000026;min-width:140px;padding:.5rem;z-index:1000}@media (prefers-color-scheme:dark){.timer-menu-popup{background-color:#1f2937;border-color:#374151;box-shadow:0 4px 12px #00000080}}.menu-item{background-color:initial;border:none;border-radius:.375rem;color:#111827;cursor:pointer;display:block;font-size:.875rem;padding:.625rem 1rem;text-align:left;transition:background-color .2s;width:100%}.menu-item:hover{background-color:#f3f4f6}.menu-item-delete{color:#ef4444}.menu-item-delete:hover{background-color:#fef2f2}@media (prefers-color-scheme:dark){.menu-item{color:#f9fafb}.menu-item:hover{background-color:#374151}.menu-item-delete{color:#f87171}.menu-item-delete:hover{background-color:#991b1b}}.modal-overlay{align-items:center;background-color:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:2000}.modal-content{background-color:#fff;border-radius:.75rem;box-shadow:0 20px 25px -5px #0000001a,0 10px 10px -5px #0000000a;max-height:90vh;max-width:600px;overflow-y:auto;padding:2rem;width:90%}@media (prefers-color-scheme:dark){.modal-content{background-color:#1f2937}}.modal-title{color:#111827;font-size:1.5rem;font-weight:700;margin-bottom:1.5rem}@media (prefers-color-scheme:dark){.modal-title{color:#f9fafb}}.form-group{margin-bottom:1.25rem}.form-row{display:flex;gap:1rem}.form-row .form-group{flex:1 1}.form-label{color:#374151;display:block;font-size:.875rem;font-weight:500;margin-bottom:.5rem}@media (prefers-color-scheme:dark){.form-label{color:#d1d5db}}.form-input{background-color:#fff;border:1px solid #d1d5db;border-radius:.5rem;box-sizing:border-box;color:#111827;font-size:.875rem;outline:none;padding:.625rem .875rem;transition:all .2s;width:100%}.form-input:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.form-hint{color:#6b7280;font-size:.75rem;margin-bottom:0;margin-top:.375rem}@media (prefers-color-scheme:dark){.form-input{background-color:#374151;border-color:#4b5563;color:#f9fafb}.form-input:focus{border-color:#3b82f6}.form-hint{color:#9ca3af}}.modal-actions{border-top:1px solid #e5e7eb;display:flex;gap:.75rem;justify-content:flex-end;margin-top:2rem;padding-top:1.5rem}@media (prefers-color-scheme:dark){.modal-actions{border-top-color:#374151}}.btn{border:none;border-radius:.5rem;cursor:pointer;font-size:.875rem;font-weight:500;padding:.625rem 1.25rem;transition:all .2s}.btn-cancel{background-color:#fff;border:1px solid #d1d5db;color:#374151}.btn-cancel:hover{background-color:#f9fafb}@media (prefers-color-scheme:dark){.btn-cancel{background-color:#374151;border-color:#4b5563;color:#e5e7eb}.btn-cancel:hover{background-color:#4b5563}}.btn-save{background-color:#3b82f6;color:#fff}.btn-save:hover{background-color:#2563eb}.project-selector-modal{max-width:500px}.start-time-edit-modal{max-width:400px}.create-project-form-container{display:flex;flex-direction:column;gap:1rem}.create-project-section{margin-bottom:1.5rem}.create-project-form,.create-project-section{display:flex;flex-direction:column;gap:.75rem}.client-selector-wrapper{width:100%}.client-button-list{display:flex;flex-wrap:wrap;gap:.5rem}.client-button{background-color:#fff;border:1px solid #d1d5db;border-radius:.375rem;color:#111827;cursor:pointer;font-size:.875rem;padding:.5rem 1rem;transition:all .2s}.client-button:hover{background-color:#f9fafb;border-color:#3b82f6}.client-button.selected{background-color:#eff6ff;border-color:#3b82f6;color:#3b82f6;font-weight:500}@media (prefers-color-scheme:dark){.client-button{background-color:#374151;border-color:#4b5563;color:#f9fafb}.client-button:hover{background-color:#4b5563;border-color:#3b82f6}.client-button.selected{background-color:#1e3a5f;border-color:#3b82f6;color:#60a5fa}}.client-select{background-color:#fff;border:1px solid #d1d5db;border-radius:.375rem;color:#111827;cursor:pointer;font-size:.875rem;padding:.5rem;width:100%}.client-select:focus{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a;outline:none}@media (prefers-color-scheme:dark){.client-select{background-color:#374151;border-color:#4b5563;color:#f9fafb}.client-select:focus{border-color:#3b82f6}}.create-client-inline{align-items:center;display:flex;gap:.5rem}.create-client-inline .form-input{flex:1 1}.create-client-inline .btn{min-width:-webkit-fit-content;min-width:fit-content;padding:.5rem 1rem}.create-project-section>.btn{align-self:flex-start;white-space:nowrap}.btn-secondary{background-color:#6b7280;border:none;border-radius:.375rem;color:#fff;cursor:pointer;font-size:.875rem;padding:.5rem 1rem;transition:background-color .2s;white-space:nowrap}.btn-secondary:hover:not(:disabled){background-color:#4b5563}.btn-secondary:disabled{cursor:not-allowed;opacity:.5}@media (prefers-color-scheme:dark){.btn-secondary{background-color:#4b5563}.btn-secondary:hover:not(:disabled){background-color:#374151}}.project-list-divider{align-items:center;color:#6b7280;display:flex;font-size:.75rem;font-weight:600;letter-spacing:.05em;margin-bottom:1rem;text-transform:uppercase}.project-list-divider:after,.project-list-divider:before{border-bottom:1px solid #e5e7eb;content:"";flex:1 1}.project-list-divider:before{margin-right:.75rem}.project-list-divider:after{margin-left:.75rem}@media (prefers-color-scheme:dark){.project-list-divider{color:#9ca3af}.project-list-divider:after,.project-list-divider:before{border-bottom-color:#4b5563}}.project-list{display:flex;flex-direction:column;gap:.5rem;margin-bottom:1rem;max-height:400px;overflow-y:auto}.project-item{align-items:center;background-color:#fff;border:1px solid #e5e7eb;border-radius:.5rem;color:#111827;cursor:pointer;display:flex;font-size:.875rem;gap:.75rem;padding:.875rem 1rem;text-align:left;transition:all .2s;width:100%}.project-item-info{display:flex;flex:1 1;flex-direction:column;gap:.25rem}.project-item-name{font-weight:500}.project-item-client{color:#6b7280;font-size:.75rem}@media (prefers-color-scheme:dark){.project-item-client{color:#9ca3af}}.project-item:hover{background-color:#f9fafb;border-color:#3b82f6}.project-item.selected{background-color:#eff6ff;border-color:#3b82f6;color:#3b82f6}@media (prefers-color-scheme:dark){.project-item{background-color:#374151;border-color:#4b5563;color:#f9fafb}.project-item:hover{background-color:#4b5563;border-color:#3b82f6}.project-item.selected{background-color:#1e3a5f;border-color:#3b82f6;color:#60a5fa}}.no-projects{color:#6b7280;font-size:.875rem;padding:2rem 1rem;text-align:center}@media (prefers-color-scheme:dark){.no-projects{color:#9ca3af}}.calendar-view{display:flex;flex-direction:column;gap:0}.calendar-title{color:#111827;font-size:1.125rem;font-weight:600;margin:0}@media (prefers-color-scheme:dark){.calendar-title{color:#f9fafb}}.calendar-nav-btn{background-color:#fff;border:1px solid #e5e7eb;border-radius:.375rem;color:#6b7280;cursor:pointer;font-size:1.25rem;font-weight:700;padding:.5rem 1rem;transition:all .2s}.calendar-nav-btn:hover:not(:disabled){background-color:#f3f4f6;border-color:#d1d5db;color:#111827}.calendar-nav-btn:disabled{cursor:not-allowed;opacity:.4}.calendar-nav-btn.today-btn{font-size:.875rem;font-weight:600;padding:.5rem 1rem}@media (prefers-color-scheme:dark){.calendar-nav-btn{background-color:#1f2937;border-color:#374151;color:#9ca3af}.calendar-nav-btn:hover:not(:disabled){background-color:#374151;border-color:#4b5563;color:#f9fafb}}.calendar-grid{grid-gap:.5rem;display:grid;gap:.5rem;grid-template-columns:repeat(5,1fr);grid-template-columns:repeat(var(--calendar-columns,5),1fr)}.calendar-day{background-color:#fff;border:1px solid #e5e7eb;border-radius:.375rem;display:flex;flex-direction:column;font-size:.8125rem;min-height:150px}.calendar-day.today{border-color:#3b82f6;border-width:2px}@media (prefers-color-scheme:dark){.calendar-day{background-color:#1f2937;border-color:#374151}.calendar-day.today{border-color:#60a5fa}}.calendar-day-header{border-bottom:1px solid #e5e7eb;display:flex;flex-direction:column;gap:.25rem;padding:.5rem;position:relative}@media (prefers-color-scheme:dark){.calendar-day-header{border-bottom-color:#374151}}.calendar-add-btn{align-items:center;background-color:#fff;border:1px solid #d1d5db;border-radius:.25rem;color:#6b7280;cursor:pointer;display:flex;font-size:.875rem;font-weight:600;height:20px;justify-content:center;line-height:1;padding:0;position:absolute;right:.25rem;top:.25rem;transition:all .2s;width:20px}.calendar-add-btn:hover{background-color:#3b82f6;border-color:#3b82f6;color:#fff}@media (prefers-color-scheme:dark){.calendar-add-btn{background-color:#374151;border-color:#4b5563;color:#9ca3af}.calendar-add-btn:hover{background-color:#3b82f6;border-color:#3b82f6;color:#fff}}.calendar-day-name{color:#111827;font-size:.75rem;font-weight:600}@media (prefers-color-scheme:dark){.calendar-day-name{color:#f9fafb}}.calendar-day-total{background-color:#eff6ff;border-radius:.25rem;color:#3b82f6;font-size:.6875rem;font-weight:600;padding:.125rem .375rem;text-align:center}@media (prefers-color-scheme:dark){.calendar-day-total{background-color:#1e3a5f;color:#60a5fa}}.calendar-day-timers{flex:1 1;flex-direction:column;overflow-y:auto}.calendar-day-timers,.calendar-timer{display:flex;gap:.375rem;padding:.375rem}.calendar-timer{background-color:#f9fafb;border:1px solid #e5e7eb;border-radius:.25rem;justify-content:space-between;position:relative;transition:all .2s}.calendar-timer:hover{background-color:#f3f4f6;border-color:#d1d5db;box-shadow:0 1px 3px #0000001a}.calendar-timer.ghost-timer{border-style:dashed}@media (prefers-color-scheme:dark){.calendar-timer{background-color:#111827;border-color:#374151}.calendar-timer:hover{background-color:#1f2937;border-color:#4b5563;box-shadow:0 1px 3px #0000004d}}.calendar-timer-content{flex:1 1;min-width:0}.calendar-timer-actions{align-items:center;display:flex;flex-direction:column;gap:.125rem}.calendar-timer-time{color:#6b7280;font-family:Courier New,monospace;font-size:.6875rem;font-weight:600;margin-bottom:.125rem}@media (prefers-color-scheme:dark){.calendar-timer-time{color:#9ca3af}}.calendar-timer-description{color:#111827;font-size:.75rem;font-weight:500;margin-bottom:.125rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media (prefers-color-scheme:dark){.calendar-timer-description{color:#f9fafb}}.calendar-timer-project{border:1px solid;border-radius:.25rem;font-size:.625rem;font-weight:500;margin-bottom:.125rem;overflow:hidden;padding:.125rem .375rem;text-overflow:ellipsis;white-space:nowrap;width:-webkit-fit-content;width:fit-content}.calendar-timer-duration{color:#3b82f6;font-family:Courier New,monospace;font-size:.6875rem;font-weight:600}@media (prefers-color-scheme:dark){.calendar-timer-duration{color:#60a5fa}}@media (max-width:1024px){.calendar-day{min-height:120px}.calendar-day-name{font-size:.6875rem}}@media (max-width:768px){.calendar-grid{gap:.25rem;grid-template-columns:repeat(5,minmax(100px,1fr));grid-template-columns:repeat(var(--calendar-columns,5),minmax(100px,1fr))}.calendar-day{min-height:100px}.calendar-day-header{padding:.25rem}.calendar-day-name{font-size:.625rem}.calendar-timer{padding:.25rem}.calendar-timer-duration,.calendar-timer-project,.calendar-timer-time{font-size:.625rem}.calendar-timer-description{font-size:.6875rem}}.timesheet-view{background-color:#fff;border-radius:.5rem;box-shadow:0 1px 3px #0000001a;padding:0}.timesheet-table{border:1px solid #e5e7eb;border-collapse:initial;border-radius:.5rem;border-spacing:0;font-size:.875rem;overflow:hidden;width:100%}.timesheet-table td,.timesheet-table th{border-bottom:1px solid #e5e7eb;padding:1rem;text-align:right;vertical-align:middle}.timesheet-table th{background-color:#f9fafb;color:#374151;font-size:.75rem;font-weight:600;letter-spacing:.05em;position:-webkit-sticky;position:sticky;text-align:right;text-transform:uppercase;top:0;white-space:nowrap;z-index:10}.timesheet-table td:first-child,.timesheet-table th:first-child{padding-left:1.25rem;text-align:left!important}.timesheet-table td:last-child,.timesheet-table th:last-child{font-weight:600;padding-right:1.25rem}.timesheet-table tbody tr:last-child td{border-bottom:none}.timesheet-table tr:hover{background-color:#f9fafb}.timesheet-hours{color:#374151;font-weight:500;padding-right:1.5rem}.timesheet-hours,.timesheet-total{font-family:SF Mono,Monaco,Inconsolata,Roboto Mono,monospace;font-size:.875rem;text-align:right}.timesheet-total{color:#111827;font-weight:700}.timesheet-totals-row{background-color:#f9fafb;border-top:2px solid #d1d5db;font-weight:600}.timesheet-totals-row td{color:#111827;padding-bottom:1rem;padding-top:1rem}.timesheet-totals-row:hover{background-color:#f9fafb!important}.timesheet-grand-total{background-color:#eff6ff;border-left:3px solid #3b82f6;color:#1e40af;font-weight:700}.timesheet-project{border:1px solid;border-radius:.375rem;display:inline-block;font-size:.75rem;font-weight:600;letter-spacing:.025em;padding:.25rem .5rem;width:-webkit-fit-content;width:fit-content}.timesheet-draggable-row{cursor:move;transition:background-color .15s ease}.timesheet-draggable-row:active{cursor:grabbing}.timesheet-draggable-row:hover{background-color:#f3f4f6!important}.timesheet-draggable-row.dragging{opacity:.4}.timesheet-draggable-row.drag-over-above{background-color:#eff6ff!important;border-top:3px solid #3b82f6}.timesheet-draggable-row.drag-over-below{background-color:#eff6ff!important;border-bottom:3px solid #3b82f6}@media (prefers-color-scheme:dark){.timesheet-view{background-color:#1f2937}.timesheet-table{border-color:#374151}.timesheet-table th{background-color:#374151;border-color:#4b5563;color:#e5e7eb}.timesheet-table td{border-color:#374151;color:#e5e7eb}.timesheet-hours{color:#d1d5db}.timesheet-total{color:#f3f4f6}.timesheet-table tr:hover{background-color:#374151}.timesheet-draggable-row:hover{background-color:#374151!important}.timesheet-draggable-row.drag-over-above{background-color:#1e3a5f!important;border-top:3px solid #60a5fa}.timesheet-draggable-row.drag-over-below{background-color:#1e3a5f!important;border-bottom:3px solid #60a5fa}.timesheet-totals-row{background-color:#374151;border-top-color:#6b7280}.timesheet-totals-row td{color:#f3f4f6}.timesheet-totals-row:hover{background-color:#374151!important}.timesheet-grand-total{background-color:#1e3a8a;border-left-color:#60a5fa;color:#93c5fd}}@media (max-width:768px){.timesheet-header{align-items:flex-start;flex-direction:column;gap:1rem}.timesheet-table{font-size:.75rem}.timesheet-table td,.timesheet-table th{padding:.5rem .25rem}.timesheet-view{padding:1rem}.timesheet-week-range{font-size:.875rem}}*{box-sizing:border-box;margin:0;padding:0}.App{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;min-height:100vh}.page-loading{min-height:200px}.loading-state,.page-loading{align-items:center;color:#6b7280;display:flex;font-size:1rem;justify-content:center}.loading-state{flex-direction:column;gap:1rem;min-height:calc(100vh - 120px)}.loading-spinner{animation:spin .8s linear infinite;border:3px solid #e5e7eb;border-top-color:#667eea;height:2rem;width:2rem}@media (prefers-color-scheme:dark){.loading-state{color:#9ca3af}.loading-spinner{border-color:#818cf8 #374151 #374151}}.login-container{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;justify-content:center;min-height:100vh;padding:20px}.login-box{background:#fff;border-radius:12px;box-shadow:0 10px 40px #0003;max-width:400px;padding:60px 40px;text-align:center;width:100%}.login-box .app-name{color:#667eea;font-size:3rem;font-weight:700;letter-spacing:-1px;margin-bottom:10px}.app-tagline{color:#666;font-size:1rem;margin-bottom:40px}.google-login-wrapper{align-items:center;display:flex;justify-content:center}.dashboard-container{background:#f5f7fa;min-height:100vh}.dashboard-header{align-items:center;background:#fff;box-shadow:0 2px 4px #0000001a;display:flex;justify-content:space-between;padding:20px 40px}.dashboard-header h1{color:#667eea;font-size:1.8rem;font-weight:700;letter-spacing:-.5px}.logout-button{background:#667eea;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:.95rem;font-weight:600;padding:10px 24px;transition:background .2s ease}.logout-button:hover{background:#5568d3}.dashboard-content{align-items:center;display:flex;justify-content:center;padding:60px 20px}.user-info{background:#fff;border-radius:12px;box-shadow:0 4px 12px #0000001a;max-width:400px;padding:40px;text-align:center;width:100%}.user-info h2{color:#333;font-size:1.5rem;margin-bottom:10px}.user-info p{color:#666;font-size:1rem}@media (max-width:480px){.login-box{padding:40px 30px}.login-box .app-name{font-size:2.5rem}.dashboard-header{padding:15px 20px}.dashboard-header h1{font-size:1.5rem}.user-info{padding:30px 20px}}@media (prefers-color-scheme:dark){.App{background:#1a1a1a}.login-container{background:linear-gradient(135deg,#4a5568,#2d3748)}.login-box{background:#2d3748;box-shadow:0 10px 40px #00000080}.login-box .app-name{color:#818cf8}.app-tagline{color:#cbd5e0}.dashboard-container{background:#1a1a1a}.dashboard-header{background:#2d3748;box-shadow:0 2px 4px #0000004d}.dashboard-header h1{color:#818cf8}.logout-button{background:#818cf8}.logout-button:hover{background:#6366f1}.user-info{background:#2d3748;box-shadow:0 4px 12px #0000004d}.user-info h2{color:#f7fafc}.user-info p{color:#cbd5e0}.page-loading{color:#9ca3af}}.login-section{display:flex;flex-direction:column;gap:12px;margin-top:30px}.google-oauth-btn{align-items:center;background:#4285f4;border:none;border-radius:8px;color:#fff;cursor:pointer;display:flex;font-size:16px;font-weight:500;gap:12px;justify-content:center;padding:12px 24px;transition:all .2s ease;width:100%}.google-oauth-btn:hover{background:#3367d6;box-shadow:0 4px 12px #4285f44d;transform:translateY(-1px)}.google-oauth-btn:active{transform:translateY(0)}.fallback-description,.oauth-description{color:#6b7280;font-size:12px;margin:0;text-align:center}.divider{margin:10px 0;position:relative;text-align:center}.divider:before{background:#e5e7eb;content:"";height:1px;left:0;position:absolute;right:0;top:50%}.divider span{background:#fff;color:#6b7280;font-size:14px;padding:0 16px}.auth-status{padding:20px;text-align:center}.auth-status.success{color:#059669}.auth-status.error{color:#dc2626}.error-message{background:#fef2f2;border:1px solid #fecaca;border-radius:6px;color:#991b1b;font-size:14px;margin:10px 0;padding:10px}.retry-btn{background:#3b82f6;border:none;border-radius:6px;color:#fff;cursor:pointer;font-size:14px;margin-top:15px;padding:10px 20px;transition:background .2s ease}.retry-btn:hover{background:#2563eb}.loading-spinner{animation:spin 1s linear infinite;border:2px solid #e5e7eb;border-radius:50%;border-top-color:#3b82f6;height:20px;margin:10px auto;width:20px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.error-boundary{align-items:center;background:linear-gradient(135deg,#667eea,#764ba2);display:flex;justify-content:center;min-height:100vh;padding:20px}.error-boundary-content{background:#fff;border-radius:12px;box-shadow:0 10px 40px #0003;max-width:600px;padding:60px 40px;text-align:center;width:100%}.error-boundary-content h1{color:#dc2626;font-size:2rem;margin-bottom:20px}.error-boundary-content .error-message{background:#0000;border:none;color:#666;font-size:1rem;margin-bottom:30px;padding:0}.error-details{background:#f3f4f6;border:1px solid #e5e7eb;border-radius:8px;margin:20px 0;padding:15px;text-align:left}.error-details summary{color:#374151;cursor:pointer;font-weight:600;margin-bottom:10px}.error-stack{word-wrap:break-word;background:#1f2937;border-radius:6px;color:#f9fafb;font-family:Courier New,monospace;font-size:.875rem;margin-top:10px;overflow-x:auto;padding:15px;white-space:pre-wrap}.error-actions{margin-top:30px}.btn-primary{background:#667eea;border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:1rem;font-weight:600;padding:12px 32px;transition:all .2s ease}.btn-primary:hover{background:#5568d3;box-shadow:0 4px 12px #667eea4d;transform:translateY(-1px)}.btn-primary:active{transform:translateY(0)}@media (prefers-color-scheme:dark){.error-boundary{background:linear-gradient(135deg,#4a5568,#2d3748)}.error-boundary-content{background:#2d3748;box-shadow:0 10px 40px #00000080}.error-boundary-content h1{color:#f87171}.error-boundary-content .error-message{color:#cbd5e0}.error-details{background:#1a202c;border-color:#374151}.error-details summary{color:#f7fafc}.btn-primary{background:#818cf8}.btn-primary:hover{background:#6366f1}}