.toast-container{bottom:var(--space-6);right:var(--space-6);gap:var(--space-3);z-index:1000;pointer-events:none;flex-direction:column;display:flex;position:fixed}.toast{align-items:flex-start;gap:var(--space-3);padding:var(--space-3) var(--space-4);background-color:var(--color-surface);border-radius:var(--radius-md);border:1px solid var(--color-border-light);pointer-events:auto;min-width:300px;max-width:400px;display:flex;box-shadow:0 4px 12px #00000026}[data-theme=dark] .toast{box-shadow:0 4px 12px #0006}.toast__icon{flex-shrink:0;margin-top:2px}.toast--success .toast__icon{color:var(--color-success)}.toast--error .toast__icon{color:var(--color-danger)}.toast__message{font-size:var(--font-size-sm);color:var(--color-text);flex:1;line-height:1.4}.toast__close{color:var(--color-text-muted);cursor:pointer;border-radius:var(--radius-sm);transition:background-color var(--transition-fast), color var(--transition-fast);background:0 0;border:none;margin:-2px;padding:2px}.toast__close:hover{background-color:var(--color-surface-hover);color:var(--color-text)}@media (width<=600px){.toast-container{bottom:var(--space-4);left:var(--space-4);right:var(--space-4)}.toast{width:100%;min-width:0}}.spinner-wrapper{padding:var(--space-8);justify-content:center;align-items:center;display:flex}.spinner-wrapper--fullscreen{min-height:100dvh}.spinner{border:3px solid var(--color-border-light);border-top-color:var(--color-primary);border-radius:50%;animation:.7s linear infinite spin}.spinner--sm{border-width:2px;width:16px;height:16px}.spinner--md{width:28px;height:28px}.spinner--lg{width:40px;height:40px}.btn{justify-content:center;align-items:center;gap:var(--space-2);font-weight:var(--font-weight-medium);font-size:var(--font-size-base);border-radius:var(--radius-md);transition:background-color var(--transition-fast), box-shadow var(--transition-fast), transform var(--transition-fast), opacity var(--transition-fast);white-space:nowrap;-webkit-user-select:none;user-select:none;line-height:1;display:inline-flex}.btn:active:not(:disabled){transform:scale(.98)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn--primary{background-color:var(--color-primary);color:var(--color-primary-text);box-shadow:var(--shadow-xs)}.btn--primary:hover:not(:disabled){background-color:var(--color-primary-hover);box-shadow:var(--shadow-sm)}.btn--secondary{background-color:var(--color-surface);color:var(--color-text);border:1px solid var(--color-border)}.btn--secondary:hover:not(:disabled){background-color:var(--color-surface-hover)}.btn--danger{background-color:var(--color-danger);color:#fff}.btn--danger:hover:not(:disabled){background-color:var(--color-danger-hover)}.btn--ghost{color:var(--color-text-secondary);background-color:#0000}.btn--ghost:hover:not(:disabled){background-color:var(--color-surface-hover);color:var(--color-text)}.btn--sm{height:32px;padding:0 var(--space-3);font-size:var(--font-size-sm);border-radius:var(--radius-sm)}.btn--md{height:40px;padding:0 var(--space-5)}.btn--lg{height:48px;padding:0 var(--space-6);font-size:var(--font-size-md)}.btn--full{width:100%}.form-field{gap:var(--space-1);flex-direction:column;display:flex}.form-field__label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text)}.form-field__input-wrapper{align-items:center;display:flex;position:relative}.form-field__icon{left:var(--space-3);color:var(--color-text-muted);pointer-events:none;transition:color var(--transition-fast);align-items:center;display:flex;position:absolute}.form-field__input:focus~.form-field__icon,.form-field__input-wrapper:focus-within .form-field__icon{color:var(--color-primary)}.form-field__input{width:100%;height:44px;padding:0 var(--space-4);background-color:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-base);color:var(--color-text);transition:border-color var(--transition-fast), box-shadow var(--transition-fast), background-color var(--transition-fast)}.form-field__input--with-icon{padding-left:40px}.form-field__input--with-toggle{padding-right:42px}.form-field__input::placeholder{color:var(--color-text-muted)}.form-field__input:hover{border-color:var(--color-text-muted)}.form-field__input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-light);outline:none}.form-field__input--error{border-color:var(--color-danger)}.form-field__input--error:focus{box-shadow:0 0 0 3px var(--color-danger-light)}.form-field__input:-webkit-autofill{transition:background-color 5000s ease-in-out;-webkit-box-shadow:0 0 0 30px var(--color-surface) inset!important;-webkit-text-fill-color:var(--color-text)!important}.form-field__input:-webkit-autofill:hover{transition:background-color 5000s ease-in-out;-webkit-box-shadow:0 0 0 30px var(--color-surface) inset!important;-webkit-text-fill-color:var(--color-text)!important}.form-field__input:-webkit-autofill:focus{transition:background-color 5000s ease-in-out;-webkit-box-shadow:0 0 0 30px var(--color-surface) inset!important;-webkit-text-fill-color:var(--color-text)!important}.form-field__input:-webkit-autofill:active{transition:background-color 5000s ease-in-out;-webkit-box-shadow:0 0 0 30px var(--color-surface) inset!important;-webkit-text-fill-color:var(--color-text)!important}.form-field__input::-ms-reveal{display:none}.form-field__input::-ms-clear{display:none}.form-field__input::-webkit-credentials-auto-fill-button{visibility:hidden;pointer-events:none;display:none!important}.form-field__toggle{right:var(--space-1);border-radius:var(--radius-sm);width:36px;height:36px;color:var(--color-text-muted);cursor:pointer;transition:color var(--transition-fast), background-color var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;display:flex;position:absolute}.form-field__toggle:hover{color:var(--color-text-secondary);background-color:var(--color-surface-hover)}.form-field__toggle:active{transform:scale(.95)}.form-field__error{font-size:var(--font-size-xs);color:var(--color-danger);min-height:18px;transition:opacity var(--transition-fast)}.modal-backdrop{-webkit-backdrop-filter:blur(4px);z-index:var(--z-modal-backdrop);padding:var(--space-4);animation:fadeIn var(--transition-fast) ease;background-color:#00000080;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.modal-content{background-color:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);flex-direction:column;width:100%;max-height:90vh;display:flex;overflow:hidden}.modal-content:focus{outline:none}.modal-header{padding:var(--space-5) var(--space-6);border-bottom:1px solid var(--color-border-light);justify-content:space-between;align-items:center;display:flex}.modal-title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text);margin:0}.modal-close-btn{border-radius:var(--radius-sm);width:32px;height:32px;color:var(--color-text-muted);transition:background-color var(--transition-fast), color var(--transition-fast);justify-content:center;align-items:center;display:flex}.modal-close-btn:hover{background-color:var(--color-surface-hover);color:var(--color-text)}.modal-body{padding:var(--space-6);overflow-y:auto}.card{background-color:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);transition:box-shadow var(--transition-base)}.card--hoverable:hover{box-shadow:var(--shadow-md)}.card__header{padding:var(--space-5) var(--space-6);border-bottom:1px solid var(--color-border-light);justify-content:space-between;align-items:center;display:flex}.card__title{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--color-text)}.card__body{padding:var(--space-6)}.card__footer{justify-content:flex-end;align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-6);border-top:1px solid var(--color-border-light);display:flex}.app-layout{min-height:100dvh;display:flex}.sidebar{width:var(--sidebar-width);background-color:var(--color-surface);border-right:1px solid var(--color-border-light);height:100dvh;z-index:var(--z-sticky);transition:transform var(--transition-slow), background-color var(--transition-base);flex-direction:column;display:flex;position:fixed;top:0;left:0}.sidebar__header{padding:var(--space-5) var(--space-5);height:var(--header-height);border-bottom:1px solid var(--color-border-light);justify-content:space-between;align-items:center;display:flex}.sidebar__logo{align-items:center;gap:var(--space-2);font-size:var(--font-size-lg);font-weight:var(--font-weight-bold);color:var(--color-primary);letter-spacing:-.02em;display:flex}.sidebar__logo-icon{background-color:var(--color-primary);color:#fff;border-radius:var(--radius-sm);justify-content:center;align-items:center;width:32px;height:32px;display:flex}.sidebar__close{border-radius:var(--radius-sm);width:32px;height:32px;color:var(--color-text-muted);transition:background-color var(--transition-fast);justify-content:center;align-items:center;display:flex}.sidebar__close:hover{background-color:var(--color-surface-hover)}.sidebar__nav{padding:var(--space-3);flex:1;overflow-y:auto}.sidebar__nav-section{margin-bottom:var(--space-4)}.sidebar__nav-label{padding:var(--space-2) var(--space-3);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em}.sidebar__link{align-items:center;gap:var(--space-3);padding:var(--space-2) var(--space-3);border-radius:var(--radius-md);font-size:var(--font-size-base);font-weight:var(--font-weight-medium);color:var(--color-text-secondary);transition:background-color var(--transition-fast), color var(--transition-fast);display:flex}.sidebar__link:hover{background-color:var(--color-surface-hover);color:var(--color-text)}.sidebar__link--active{background-color:var(--color-primary-light);color:var(--color-primary)}.sidebar__footer{padding:var(--space-4) var(--space-5);border-top:1px solid var(--color-border-light)}.sidebar__user{align-items:center;gap:var(--space-3);display:flex}.sidebar__avatar{border-radius:var(--radius-full);background-color:var(--color-primary-light);width:36px;height:36px;color:var(--color-primary);font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);flex-shrink:0;justify-content:center;align-items:center;display:flex}.sidebar__user-info{flex:1;min-width:0}.sidebar__user-name{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.sidebar__user-email{font-size:var(--font-size-xs);color:var(--color-text-muted);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.app-layout__main{margin-left:var(--sidebar-width);min-height:100dvh;transition:margin-left var(--transition-slow);flex:1}.app-header{height:var(--header-height);background-color:var(--header-backdrop);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--color-border-light);padding:0 var(--space-6);z-index:var(--z-sticky);transition:background-color var(--transition-base);justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.app-header__left{align-items:center;gap:var(--space-3);display:flex}.app-header__menu-btn{border-radius:var(--radius-sm);width:36px;height:36px;color:var(--color-text-secondary);transition:background-color var(--transition-fast);justify-content:center;align-items:center;display:flex}.app-header__menu-btn:hover{background-color:var(--color-surface-hover)}.app-header__title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text)}.app-header__right{align-items:center;gap:var(--space-2);display:flex}.app-header__icon-btn{border-radius:var(--radius-md);width:38px;height:38px;color:var(--color-text-secondary);transition:background-color var(--transition-fast), color var(--transition-fast), transform var(--transition-fast);justify-content:center;align-items:center;display:flex}.app-header__icon-btn:hover{background-color:var(--color-surface-hover);color:var(--color-text)}.app-header__icon-btn:active{transform:scale(.93)}.app-header__icon-btn--danger:hover{background-color:var(--color-danger-light);color:var(--color-danger)}.app-header__profile{align-items:center;gap:var(--space-3);padding:var(--space-1) var(--space-3) var(--space-1) var(--space-1);border-radius:var(--radius-md);margin:0 var(--space-1);transition:background-color var(--transition-fast);cursor:default;display:flex}.app-header__profile:hover{background-color:var(--color-surface-hover)}.app-header__avatar{border-radius:var(--radius-full);background:linear-gradient(135deg, var(--color-primary), var(--color-primary-hover));color:#fff;width:34px;height:34px;font-size:var(--font-size-sm);font-weight:var(--font-weight-semibold);flex-shrink:0;justify-content:center;align-items:center;display:flex}.app-header__profile-info{flex-direction:column;min-width:0;display:flex}.app-header__profile-name{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text);white-space:nowrap;text-overflow:ellipsis;line-height:var(--line-height-tight);overflow:hidden}.app-header__profile-email{font-size:var(--font-size-xs);color:var(--color-text-muted);white-space:nowrap;text-overflow:ellipsis;line-height:var(--line-height-tight);overflow:hidden}.app-content{padding:var(--space-6);max-width:var(--content-max-width);margin:0 auto}.sidebar-overlay{z-index:calc(var(--z-sticky) - 1);animation:fadeIn var(--transition-base) ease;background-color:#0000004d;display:none;position:fixed;inset:0}@media (width<=1023px){.sidebar{transform:translate(-100%)}.sidebar--open{transform:translate(0)}.sidebar-overlay--visible{display:block}.app-layout__main{margin-left:0}.app-header__menu-btn{display:flex}.app-header__profile-info{display:none}}@media (width>=1024px){.app-header__menu-btn,.sidebar__close{display:none}}@media (width<=640px){.app-header__profile{display:none}.app-content{padding:var(--space-4)}}.auth-layout{min-height:100dvh;display:flex;overflow-x:hidden}.auth-layout__brand{width:55%;padding:var(--space-12);color:#fff;flex-direction:column;justify-content:center;align-items:flex-start;display:none;position:relative;overflow:hidden}.auth-layout__brand:before{content:"";pointer-events:none;background:radial-gradient(circle at 20% 80%,#ffffff14 0%,#0000 50%),radial-gradient(circle at 80% 20%,#ffffff0f 0%,#0000 50%);position:absolute;inset:0}.auth-layout__brand:after{content:"";pointer-events:none;background:#ffffff0a;border-radius:50%;width:300px;height:300px;position:absolute;bottom:-80px;right:-60px}.auth-layout__brand-logo{align-items:center;gap:var(--space-3);margin-bottom:var(--space-8);display:flex;position:relative}.auth-layout__brand-logo-icon{background-color:var(--color-primary);color:#fff;border-radius:var(--radius-md);justify-content:center;align-items:center;width:38px;height:38px;display:flex}.auth-layout__brand-logo-text{font-size:2rem;font-weight:var(--font-weight-bold);letter-spacing:-.02em;color:var(--color-primary)}.auth-layout__brand-tagline{font-size:4rem;font-weight:var(--font-weight-bold);line-height:var(--line-height-tight);max-width:100%;position:relative}.auth-layout__brand-description{margin-top:var(--space-4);font-size:var(--font-size-md);opacity:.85;line-height:var(--line-height-relaxed);max-width:360px;position:relative}.auth-layout__content{padding:var(--space-6);flex:1;justify-content:center;align-items:center;display:flex}.auth-layout__form-container{width:100%;max-width:420px;animation:fadeInUp var(--transition-slow) ease both}.auth-layout__heading{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-text);margin-bottom:var(--space-1)}.auth-layout__subheading{font-size:var(--font-size-base);color:var(--color-text-secondary);margin-bottom:var(--space-8);line-height:var(--line-height-relaxed)}.auth-layout__footer{margin-top:var(--space-6);text-align:center;font-size:var(--font-size-sm);color:var(--color-text-secondary)}.auth-layout__footer a{color:var(--color-primary);font-weight:var(--font-weight-medium);transition:color var(--transition-fast)}.auth-layout__footer a:hover{color:var(--color-primary-hover);text-decoration:underline}.auth-alert{align-items:flex-start;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-sm);margin-bottom:var(--space-4);animation:fadeIn var(--transition-base) ease;line-height:var(--line-height-relaxed);display:flex}.auth-alert--error{background-color:var(--color-danger-light);color:var(--color-danger);border:1px solid #e5484d26}.auth-alert--success{background-color:var(--color-success-light);color:var(--color-success);border:1px solid #30a46c26}.auth-form{gap:var(--space-1);flex-direction:column;display:flex}.auth-form__submit{margin-top:var(--space-3)}.auth-form__hint{font-size:var(--font-size-xs);color:var(--color-text-muted);margin-top:var(--space-1);line-height:var(--line-height-relaxed)}.auth-success-icon{border-radius:var(--radius-full);background-color:var(--color-success-light);width:72px;height:72px;color:var(--color-success);margin:0 auto var(--space-6);animation:scaleIn var(--transition-slow) ease both;justify-content:center;align-items:center;display:flex}.auth-redirect-countdown{font-size:var(--font-size-sm);color:var(--color-text-muted);text-align:center;margin-top:var(--space-2);animation:1s infinite pulse}@keyframes scaleIn{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes pulse{0%{opacity:.6}50%{opacity:1}to{opacity:.6}}@media (width>=1024px){.auth-layout__brand{z-index:10;transition:transform 1.5s;display:flex;box-shadow:0 0 40px #0006}.auth-layout__content{z-index:1;flex:none;width:45%;transition:transform 1.5s}.auth-layout--signup .auth-layout__brand{transform:translate(81.818%)}.auth-layout--signup .auth-layout__content{transform:translate(-122.222%)}}@media (width<=480px){.auth-layout__content{padding:var(--space-4)}.auth-layout__heading{font-size:var(--font-size-xl)}}.timesheet{gap:var(--space-6);flex-direction:column;width:100%;display:flex}.timesheet-summary{gap:var(--space-5);grid-template-columns:repeat(auto-fit,minmax(220px,1fr));display:grid}.summary-card{align-items:center;gap:var(--space-4);padding:var(--space-5);background-color:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);display:flex}.summary-card__icon{border-radius:var(--radius-md);flex-shrink:0;justify-content:center;align-items:center;width:48px;height:48px;display:flex}.summary-card__icon--primary{background-color:var(--color-primary-light);color:var(--color-primary)}.summary-card__icon--success{background-color:var(--color-success-light);color:var(--color-success)}.summary-card__icon--warning{background-color:var(--color-warning-light);color:var(--color-warning)}.summary-card__content{flex-direction:column;justify-content:center;display:flex}.summary-card__content--full{width:100%}.summary-card__header{justify-content:space-between;align-items:center;margin-bottom:2px;display:flex}.summary-card__percentage{font-size:var(--font-size-xs);font-weight:var(--font-weight-bold);color:var(--color-success)}.summary-card__label{font-size:var(--font-size-sm);color:var(--color-text-muted);font-weight:var(--font-weight-medium)}.summary-card__value-row{margin-bottom:var(--space-3)}.summary-card__value{font-size:1.5rem;font-weight:var(--font-weight-bold);color:var(--color-text);line-height:1.2}.summary-card__unit{font-size:var(--font-size-sm);color:var(--color-text-muted);font-weight:var(--font-weight-medium);margin-left:2px}.summary-card__progress-track{background-color:var(--color-border-light);border-radius:3px;width:100%;height:6px;overflow:hidden}.summary-card__progress-bar{background-color:var(--color-success);height:100%;transition:width var(--transition-slow) ease-out;border-radius:3px}.timesheet-filters{justify-content:space-between;align-items:center;gap:var(--space-4);padding:var(--space-4);background-color:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);flex-wrap:wrap;display:flex}.timesheet-filters__search{flex:1;min-width:250px;position:relative}.timesheet-filters__search-icon{left:var(--space-3);color:var(--color-text-muted);position:absolute;top:50%;transform:translateY(-50%)}.timesheet-filters__search-input{width:100%;height:40px;padding:0 var(--space-4) 0 36px;background-color:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);color:var(--color-text);transition:border-color var(--transition-fast), box-shadow var(--transition-fast)}.timesheet-filters__search-input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-light);outline:none}.timesheet-filters__actions{align-items:center;gap:var(--space-3);flex-wrap:wrap;flex-shrink:0;display:flex}.timesheet-filters__category{position:relative}.timesheet-filters__category-icon{left:var(--space-3);color:var(--color-text-muted);pointer-events:none;position:absolute;top:50%;transform:translateY(-50%)}.timesheet-filters__category-select{appearance:none;height:40px;padding:0 var(--space-8) 0 36px;background-color:var(--color-background);border:1px solid var(--color-border);border-radius:var(--radius-md);font-size:var(--font-size-sm);color:var(--color-text);cursor:pointer;transition:border-color var(--transition-fast)}.timesheet-filters__category-select:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-light);outline:none}.timesheet-action-btn--add{align-items:center;gap:var(--space-2);padding:0 var(--space-4);background-color:var(--color-primary);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);white-space:nowrap;transition:background-color var(--transition-fast), transform var(--transition-fast);border:none;flex-shrink:0;display:flex;color:#fff!important;width:auto!important;height:40px!important}.timesheet-action-btn--add:hover{color:#000!important;background:#fff!important;box-shadow:inset 0 0 0 1px #000!important}.timesheet-action-btn--add:active{transform:scale(.95)}.timesheet-action-btn--clear{height:40px;padding:0 var(--space-4);background-color:var(--color-surface-hover);color:var(--color-text-muted);border-radius:var(--radius-md);font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);white-space:nowrap;transition:background-color var(--transition-fast), color var(--transition-fast);border:1px solid var(--color-border);flex-shrink:0;align-items:center;display:inline-flex;width:auto!important}.timesheet-action-btn--clear:hover{background-color:var(--color-border);color:var(--color-text)}.timesheet-table{background-color:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);overflow:hidden}.timesheet-table__header{gap:var(--space-4);padding:var(--space-3) var(--space-5);background-color:var(--color-surface-hover);border-bottom:1px solid var(--color-border-light);font-size:var(--font-size-xs);font-weight:var(--font-weight-semibold);color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.05em;grid-template-columns:100px 1fr 140px 80px 100px 80px;display:grid}.timesheet-table__row{gap:var(--space-4);padding:var(--space-4) var(--space-5);border-bottom:1px solid var(--color-border-light);transition:background-color var(--transition-fast);grid-template-columns:100px 1fr 140px 80px 100px 80px;align-items:center;display:grid}.timesheet-table__row:last-child{border-bottom:none}.timesheet-table__row:hover{background-color:var(--color-background)}.timesheet-table__cell{font-size:var(--font-size-sm);color:var(--color-text);align-items:center;min-width:0;display:flex}.timesheet-table__date{font-weight:var(--font-weight-medium);color:var(--color-text-secondary)}.timesheet-table__description{white-space:nowrap;text-overflow:ellipsis;width:100%;overflow:hidden}.timesheet-table__hours{font-weight:var(--font-weight-semibold);font-family:monospace;font-size:var(--font-size-md)}.timesheet-table__cell--actions{justify-content:flex-end;gap:var(--space-2)}.timesheet-badge{border-radius:var(--radius-full);font-size:.75rem;font-weight:var(--font-weight-medium);background-color:var(--color-surface-hover);color:var(--color-text-secondary);align-items:center;padding:2px 8px;display:inline-flex}.timesheet-badge--development{color:var(--color-primary);background-color:#6b8aff26}.timesheet-badge--design{color:var(--color-warning-hover);background-color:#f0a30a26}.timesheet-badge--client-meeting{color:var(--color-success);background-color:#45c98b26}.timesheet-billable{font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);align-items:center;gap:4px;display:inline-flex}.timesheet-billable-toggle{border-radius:var(--radius-sm);transition:background-color var(--transition-fast);align-items:center;margin:-4px -8px;padding:4px 8px;display:inline-flex}.timesheet-billable-toggle:hover:not(:disabled){background-color:var(--color-surface-hover)}.timesheet-billable-toggle:disabled{opacity:.7;cursor:not-allowed}.timesheet-billable--yes{color:var(--color-success)}.timesheet-billable--no{color:var(--color-text-muted)}.timesheet-billable--loading{color:var(--color-primary)}.timesheet-action-btn{border-radius:var(--radius-sm);width:32px;height:32px;color:var(--color-text-muted);transition:background-color var(--transition-fast), color var(--transition-fast);justify-content:center;align-items:center;display:inline-flex}.timesheet-action-btn:hover{background-color:var(--color-border-light);color:var(--color-text)}.timesheet-action-btn--delete:hover{background-color:var(--color-danger-light);color:var(--color-danger)}.timesheet-table__footer{padding:var(--space-4) var(--space-5);background-color:var(--color-surface-hover);border-top:1px solid var(--color-border-light);border-radius:0 0 var(--radius-lg) var(--radius-lg);font-size:var(--font-size-sm);color:var(--color-text-secondary);justify-content:space-between;align-items:center;display:flex}.timesheet-table__footer-total strong{color:var(--color-text);font-family:monospace;font-size:var(--font-size-md);margin-left:var(--space-1)}.timesheet-empty{padding:var(--space-16) var(--space-6);text-align:center;background-color:var(--color-surface);border:1px dashed var(--color-border);border-radius:var(--radius-lg);flex-direction:column;justify-content:center;align-items:center;display:flex}.timesheet-empty__icon{border-radius:var(--radius-full);background-color:var(--color-surface-hover);width:56px;height:56px;color:var(--color-text-muted);margin-bottom:var(--space-4);justify-content:center;align-items:center;display:flex}.timesheet-empty__icon--loading{color:var(--color-primary);background-color:var(--color-primary-light);animation:1.5s infinite pulse}.timesheet-empty__title{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--color-text);margin-bottom:var(--space-2)}.timesheet-empty__text{font-size:var(--font-size-sm);color:var(--color-text-secondary);max-width:400px}@media (width<=768px){.timesheet-table__header{display:none}.timesheet-table__row{gap:var(--space-3);padding:var(--space-4);grid-template-columns:1fr;position:relative}.timesheet-table__cell{justify-content:space-between;align-items:center;width:100%;display:flex}.timesheet-table__cell:before{content:attr(data-label);font-size:var(--font-size-xs);font-weight:var(--font-weight-medium);color:var(--color-text-muted);text-transform:uppercase}.timesheet-table__cell--desc{align-items:flex-start;gap:var(--space-1);flex-direction:column}.timesheet-table__cell--desc:before{display:none}.timesheet-table__description{white-space:normal;word-break:break-word;font-weight:var(--font-weight-medium)}.timesheet-table__cell--actions{top:var(--space-4);right:var(--space-4);width:auto;position:absolute}.timesheet-table__cell--actions:before{display:none}.timesheet-filters__search{width:100%;min-width:100%}}.timesheet-skeleton{gap:var(--space-6);flex-direction:column;width:100%;display:flex}.skeleton-box{background:linear-gradient(90deg, var(--color-surface-hover) 25%, var(--color-border-light) 50%, var(--color-surface-hover) 75%);border-radius:var(--radius-sm);background-size:200% 100%;animation:1.5s linear infinite shimmer}.timesheet-skeleton__summary{gap:var(--space-5);grid-template-columns:repeat(auto-fit,minmax(220px,1fr));display:grid}.timesheet-skeleton__card{align-items:center;gap:var(--space-4);padding:var(--space-5);background-color:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-lg);display:flex}.skeleton-box--icon{border-radius:var(--radius-md);width:48px;height:48px}.timesheet-skeleton__card-content{gap:var(--space-2);flex-direction:column;flex:1;display:flex}.skeleton-box--text-sm{width:60%;height:14px}.skeleton-box--text-lg{width:40%;height:24px}.timesheet-skeleton__filters{justify-content:space-between;gap:var(--space-4);padding:var(--space-4);background-color:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-lg);display:flex}.skeleton-box--search{border-radius:var(--radius-md);width:250px;height:40px}.skeleton-box--button{border-radius:var(--radius-md);width:120px;height:40px}.timesheet-skeleton__table{background-color:var(--color-surface);border:1px solid var(--color-border-light);border-radius:var(--radius-lg);overflow:hidden}.timesheet-skeleton__table-header{gap:var(--space-4);padding:var(--space-4) var(--space-5);background-color:var(--color-surface-hover);border-bottom:1px solid var(--color-border-light);grid-template-columns:100px 1fr 140px 80px 100px 80px;display:grid}.skeleton-box--text-xs{width:70%;height:12px}.timesheet-skeleton__table-row{gap:var(--space-4);padding:var(--space-5);border-bottom:1px solid var(--color-border-light);grid-template-columns:100px 1fr 140px 80px 100px 80px;align-items:center;display:grid}.skeleton-box--text{width:100%;height:16px}.skeleton-box--text-long{width:80%;height:16px}.skeleton-box--text-short{width:50%;height:16px}.skeleton-box--badge{border-radius:var(--radius-full);width:80px;height:20px}.skeleton-box--actions{justify-self:flex-end;width:64px;height:32px}@media (width<=768px){.timesheet-skeleton__table-header{display:none}.timesheet-skeleton__table-row{gap:var(--space-4);grid-template-columns:1fr}}.timesheet-form{gap:var(--space-4);flex-direction:column;display:flex}.form-row{gap:var(--space-4);display:flex}.form-col{flex:1}.form-checkbox{align-items:center;gap:var(--space-2);margin-top:var(--space-2);display:flex}.form-checkbox__input{width:18px;height:18px;accent-color:var(--color-primary);cursor:pointer}.form-checkbox__label{font-size:var(--font-size-sm);font-weight:var(--font-weight-medium);color:var(--color-text);cursor:pointer}.form-actions{justify-content:flex-end;gap:var(--space-3);margin-top:var(--space-6);padding-top:var(--space-4);border-top:1px solid var(--color-border-light);display:flex}.form-alert{align-items:center;gap:var(--space-2);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--font-size-sm);margin-bottom:var(--space-4);animation:fadeIn var(--transition-base) ease;display:flex}.form-alert--error{background-color:var(--color-danger-light);color:var(--color-danger);border:1px solid #e5484d26}select.form-field__input{appearance:none;background-image:url(data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%239198a8%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E);background-repeat:no-repeat;background-position:right var(--space-3) top 50%;background-size:10px}@media (width<=600px){.form-row{gap:var(--space-4);flex-direction:column}}.dashboard-page{animation:fadeInUp var(--transition-slow) ease both}.dashboard-welcome{margin-bottom:var(--space-8)}.dashboard-welcome__title{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-text);margin-bottom:var(--space-1)}.dashboard-welcome__subtitle{font-size:var(--font-size-base);color:var(--color-text-secondary)}.dashboard-stats{gap:var(--space-5);margin-bottom:var(--space-8);grid-template-columns:repeat(auto-fit,minmax(220px,1fr));display:grid}.dashboard-timesheet-section{gap:var(--space-4);flex-direction:column;display:flex}.dashboard-error{padding:var(--space-5);background-color:var(--color-danger-light);border-radius:var(--radius-lg);margin-bottom:var(--space-6);border:1px solid #e5484d33;justify-content:space-between;align-items:center;display:flex}.dashboard-error__content{align-items:center;gap:var(--space-4);display:flex}.dashboard-error__icon{color:var(--color-danger);flex-shrink:0}.dashboard-error__title{font-size:var(--font-size-md);font-weight:var(--font-weight-semibold);color:var(--color-danger);margin-bottom:var(--space-1)}.dashboard-error__message{font-size:var(--font-size-sm);color:var(--color-text-secondary)}.stat-card{align-items:flex-start;gap:var(--space-4);padding:var(--space-6);display:flex}.stat-card__icon{border-radius:var(--radius-md);flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;display:flex}.stat-card__icon--primary{background-color:var(--color-primary-light);color:var(--color-primary)}.stat-card__icon--success{background-color:var(--color-success-light);color:var(--color-success)}.stat-card__icon--warning{background-color:var(--color-warning-light);color:var(--color-warning)}.stat-card__content{flex:1}.stat-card__label{font-size:var(--font-size-sm);color:var(--color-text-muted);margin-bottom:var(--space-1)}.stat-card__value{font-size:var(--font-size-2xl);font-weight:var(--font-weight-bold);color:var(--color-text);line-height:1}.dashboard-empty{text-align:center;padding:var(--space-16) var(--space-6)}.dashboard-empty__icon{border-radius:var(--radius-full);background-color:var(--color-primary-light);width:64px;height:64px;color:var(--color-primary);margin-bottom:var(--space-5);justify-content:center;align-items:center;display:inline-flex}.dashboard-empty__title{font-size:var(--font-size-lg);font-weight:var(--font-weight-semibold);color:var(--color-text);margin-bottom:var(--space-2)}.dashboard-empty__description{font-size:var(--font-size-base);color:var(--color-text-secondary);max-width:400px;margin:0 auto}:root{--color-background:#f8f9fb;--color-surface:#fff;--color-surface-hover:#f1f3f7;--color-surface-raised:#fff;--color-text:#1a1d23;--color-text-secondary:#5f6577;--color-text-muted:#9198a8;--color-border:#e2e5ed;--color-border-light:#eef0f5;--color-primary:#4f6ef7;--color-primary-hover:#3b5ce4;--color-primary-light:#eef1fe;--color-primary-text:#fff;--color-danger:#e5484d;--color-danger-hover:#d13438;--color-danger-light:#fef0f0;--color-success:#30a46c;--color-success-hover:#279a5e;--color-success-light:#edf9f0;--color-warning:#f0a30a;--color-warning-hover:#d89309;--color-warning-light:#fef8e7;--shadow-xs:0 1px 2px #0000000a;--shadow-sm:0 1px 3px #0000000f, 0 1px 2px #0000000a;--shadow-md:0 4px 12px #0000000f, 0 1px 3px #0000000a;--shadow-lg:0 10px 30px #00000014, 0 2px 6px #0000000a;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-xl:20px;--radius-full:9999px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--space-16:64px;--font-family:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, sans-serif;--font-size-xs:.75rem;--font-size-sm:.8125rem;--font-size-base:.875rem;--font-size-md:1rem;--font-size-lg:1.125rem;--font-size-xl:1.25rem;--font-size-2xl:1.5rem;--font-size-3xl:1.875rem;--font-weight-normal:400;--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--line-height-tight:1.25;--line-height-normal:1.5;--line-height-relaxed:1.625;--transition-fast:.15s ease;--transition-base:.2s ease;--transition-slow:.3s ease;--z-dropdown:100;--z-sticky:200;--z-modal-backdrop:300;--z-modal:400;--z-toast:500;--sidebar-width:260px;--header-height:64px;--content-max-width:1200px;--header-backdrop:#f8f9fbd9}[data-theme=dark]{--color-background:#0f1117;--color-surface:#1a1d27;--color-surface-hover:#252836;--color-surface-raised:#21242f;--color-text:#e8eaed;--color-text-secondary:#9aa0b4;--color-text-muted:#636a80;--color-border:#2e3242;--color-border-light:#252836;--color-primary:#6b8aff;--color-primary-hover:#5a76f0;--color-primary-light:#6b8aff1f;--color-primary-text:#fff;--color-danger:#f76e72;--color-danger-hover:#e5484d;--color-danger-light:#f76e721f;--color-success:#45c98b;--color-success-hover:#30a46c;--color-success-light:#45c98b1f;--color-warning:#f5b731;--color-warning-hover:#f0a30a;--color-warning-light:#f5b7311f;--shadow-xs:0 1px 2px #0003;--shadow-sm:0 1px 3px #00000040, 0 1px 2px #00000026;--shadow-md:0 4px 12px #0000004d, 0 1px 3px #00000026;--shadow-lg:0 10px 30px #00000059, 0 2px 6px #0003;--header-backdrop:#0f1117d9}*,:before,:after{box-sizing:border-box;margin:0;padding:0}::selection{background-color:var(--color-primary);color:#fff}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;font-size:16px}body{font-family:var(--font-family);font-size:var(--font-size-base);font-weight:var(--font-weight-normal);line-height:var(--line-height-normal);color:var(--color-text);background-color:var(--color-background);min-height:100dvh;transition:background-color var(--transition-base), color var(--transition-base)}img,svg{max-width:100%;display:block}a{color:inherit;text-decoration:none}button{cursor:pointer;font:inherit;color:inherit;background:0 0;border:none}input,textarea,select{font:inherit;color:inherit}ul,ol{list-style:none}h1,h2,h3,h4,h5,h6{font-weight:var(--font-weight-semibold);line-height:var(--line-height-tight)}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--color-border);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb:hover{background:var(--color-text-muted)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-16px)}to{opacity:1;transform:translate(0)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.animate-fade-in{animation:fadeIn var(--transition-base) ease both}.animate-fade-in-up{animation:fadeInUp var(--transition-slow) ease both}.animate-slide-in-left{animation:slideInLeft var(--transition-slow) ease both}.animate-spin{animation:1s linear infinite spin}
