:root{--color-primary: #3b82f6;--color-primary-hover: #2563eb;--color-primary-active: #1d4ed8;--color-secondary: #64748b;--color-success: #22c55e;--color-warning: #f59e0b;--color-error: #ef4444;--color-error-light: #fef2f2;--color-error-border: #fecaca;--bg-primary: #ffffff;--bg-secondary: #f8fafc;--bg-tertiary: #f1f5f9;--bg-dark: #1e293b;--text-primary: #1e293b;--text-secondary: #64748b;--text-muted: #94a3b8;--text-inverse: #ffffff;--border-color: #e2e8f0;--border-color-focus: #3b82f6;--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / .05);--shadow-md: 0 4px 6px -1px rgb(0 0 0 / .1), 0 2px 4px -2px rgb(0 0 0 / .1);--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / .1), 0 4px 6px -4px rgb(0 0 0 / .1);--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: 1rem;--spacing-lg: 1.5rem;--spacing-xl: 2rem;--spacing-2xl: 3rem;--radius-sm: .25rem;--radius-md: .375rem;--radius-lg: .5rem;--radius-xl: .75rem;--radius-full: 9999px;--font-family: Inter, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-size-xs: .75rem;--font-size-sm: .875rem;--font-size-base: 1rem;--font-size-lg: 1.125rem;--font-size-xl: 1.25rem;--font-size-2xl: 1.5rem;--font-size-3xl: 2rem;--transition-fast: .15s ease;--transition-normal: .2s ease;--transition-slow: .3s ease;--sidebar-width: 320px;--header-height: auto;--max-content-width: 1200px}@media(prefers-color-scheme:dark){:root{--bg-primary: #0f172a;--bg-secondary: #1e293b;--bg-tertiary: #334155;--text-primary: #f1f5f9;--text-secondary: #94a3b8;--text-muted: #64748b;--border-color: #334155;--color-error-light: #450a0a;--color-error-border: #7f1d1d}}*,*:before,*:after{box-sizing:border-box}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;padding:0;font-family:var(--font-family);font-size:var(--font-size-base);line-height:1.6;color:var(--text-primary);background-color:var(--bg-secondary);min-height:100vh}#app{min-height:100vh;display:flex;flex-direction:column}h1,h2,h3,h4,h5,h6{margin:0;font-weight:600;line-height:1.3;color:var(--text-primary)}p{margin:0}.app{display:flex;flex-direction:column;min-height:100vh;width:100%;background-color:var(--bg-secondary)}.app-header{background-color:var(--bg-primary);border-bottom:1px solid var(--border-color);padding:var(--spacing-sm) var(--spacing-lg);position:sticky;top:0;z-index:100}.app-header-content{max-width:var(--max-content-width);margin:0 auto;display:flex;align-items:center;justify-content:space-between}.app-logo-section{display:flex;align-items:center;gap:var(--spacing-sm)}.app-logo{font-size:1.5rem;line-height:1}.app-title-group{display:flex;flex-direction:column}.app-title{font-size:var(--font-size-lg);font-weight:700;color:var(--text-primary);line-height:1.2}.app-subtitle{font-size:var(--font-size-xs);color:var(--text-muted);line-height:1.2}.app-main{display:flex;flex:1;max-width:var(--max-content-width);width:100%;margin:0 auto;padding:var(--spacing-md);gap:var(--spacing-md)}.app-sidebar{width:280px;flex-shrink:0;display:flex;flex-direction:column;gap:var(--spacing-sm)}.app-content{flex:1;min-width:0;display:flex;flex-direction:column;gap:var(--spacing-md)}.token-config-panel{background-color:var(--bg-primary);border-radius:var(--radius-lg);padding:var(--spacing-md);box-shadow:var(--shadow-sm);border:1px solid var(--border-color)}.token-config-title{font-size:var(--font-size-sm);font-weight:600;margin-bottom:var(--spacing-sm);color:var(--text-primary);display:flex;align-items:center;gap:var(--spacing-xs)}.token-config-title:before{content:"🔑";font-size:var(--font-size-sm)}.token-input-container{margin-bottom:var(--spacing-sm)}.token-label{display:block;font-size:var(--font-size-xs);font-weight:500;color:var(--text-secondary);margin-bottom:var(--spacing-xs)}.token-input{width:100%;padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-base);font-family:inherit;border:1px solid var(--border-color);border-radius:var(--radius-md);background-color:var(--bg-primary);color:var(--text-primary);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.token-input:focus{outline:none;border-color:var(--border-color-focus);box-shadow:0 0 0 3px #3b82f61a}.token-input::placeholder{color:var(--text-muted)}.token-input-error{border-color:var(--color-error)}.token-input-error:focus{box-shadow:0 0 0 3px #ef44441a}.token-button-container{margin-bottom:var(--spacing-md)}.token-save-button{width:100%;padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-base);font-weight:500;font-family:inherit;color:var(--text-inverse);background-color:var(--color-primary);border:none;border-radius:var(--radius-md);cursor:pointer;transition:background-color var(--transition-fast),transform var(--transition-fast)}.token-save-button:hover{background-color:var(--color-primary-hover)}.token-save-button:active{background-color:var(--color-primary-active);transform:scale(.98)}.token-save-button:focus{outline:none;box-shadow:0 0 0 3px #3b82f64d}.token-save-button:disabled{background-color:var(--text-muted);cursor:not-allowed;transform:none}.token-status-container{display:flex;align-items:center;gap:var(--spacing-xs);font-size:var(--font-size-sm)}.token-status-label{color:var(--text-secondary)}.token-status-value{font-weight:500}.token-status-saved{color:var(--color-success)}.token-status-not-saved{color:var(--text-muted)}.token-error-container{margin-top:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background-color:var(--color-error-light);border:1px solid var(--color-error-border);border-radius:var(--radius-md)}.token-error-message{color:var(--color-error);font-size:var(--font-size-sm)}.month-selector{background-color:var(--bg-primary);border-radius:var(--radius-lg);padding:var(--spacing-md);box-shadow:var(--shadow-sm);border:1px solid var(--border-color)}.month-selector-title{font-size:var(--font-size-sm);font-weight:600;margin-bottom:var(--spacing-sm);color:var(--text-primary);display:flex;align-items:center;gap:var(--spacing-xs)}.month-selector-title:before{content:"📅";font-size:var(--font-size-sm)}.month-selector-controls{display:flex;gap:var(--spacing-sm)}.month-selector-field{flex:1}.month-selector-label{display:block;font-size:var(--font-size-xs);font-weight:500;color:var(--text-secondary);margin-bottom:var(--spacing-xs)}.month-selector-select{width:100%;padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-sm);font-family:inherit;border:1px solid var(--border-color);border-radius:var(--radius-md);background-color:var(--bg-primary);color:var(--text-primary);cursor:pointer;transition:border-color var(--transition-fast),box-shadow var(--transition-fast);appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2364748b' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right var(--spacing-xs) center;padding-right:var(--spacing-lg)}.month-selector-select:focus{outline:none;border-color:var(--border-color-focus);box-shadow:0 0 0 3px #3b82f61a}.month-selector-select:hover{border-color:var(--text-muted)}.month-selector-display{display:none}.work-item-list{background-color:var(--bg-primary);border-radius:var(--radius-lg);padding:var(--spacing-lg);box-shadow:var(--shadow-sm);border:1px solid var(--border-color);flex:1}.work-item-list-title{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--spacing-md);color:var(--text-primary);padding-bottom:var(--spacing-sm);border-bottom:1px solid var(--border-color)}.work-item-list-container{display:flex;flex-direction:column;gap:var(--spacing-md)}.work-item-list-empty{text-align:center;padding:var(--spacing-2xl) var(--spacing-lg);color:var(--text-muted);font-size:var(--font-size-base);background-color:var(--bg-tertiary);border-radius:var(--radius-md);border:2px dashed var(--border-color)}.work-item{padding:var(--spacing-md);background-color:var(--bg-secondary);border-radius:var(--radius-md);border:1px solid var(--border-color);transition:box-shadow var(--transition-fast),transform var(--transition-fast)}.work-item:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.work-item-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-sm)}.work-item-date{font-size:var(--font-size-sm);font-weight:600;color:var(--color-primary)}.work-item-hours{font-size:var(--font-size-sm);font-weight:700;color:var(--text-inverse);background-color:var(--color-primary);padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-full)}.work-item-time{font-size:var(--font-size-sm);color:var(--text-secondary);margin-bottom:var(--spacing-xs)}.work-item-description{font-size:var(--font-size-base);color:var(--text-primary);line-height:1.5;margin-bottom:var(--spacing-sm)}.work-item-meta{display:flex;flex-wrap:wrap;gap:var(--spacing-sm);font-size:var(--font-size-xs)}.work-item-project,.work-item-task{color:var(--text-secondary);background-color:var(--bg-tertiary);padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-sm)}.sync-button-container{margin-top:0}.sync-button{width:100%;display:flex;align-items:center;justify-content:center;gap:var(--spacing-xs);padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-sm);font-weight:600;font-family:inherit;color:var(--text-inverse);background-color:var(--color-primary);border:none;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.sync-button:hover:not(:disabled){background-color:var(--color-primary-hover)}.sync-button:active:not(:disabled){background-color:var(--color-primary-active);transform:scale(.98)}.sync-button:focus{outline:none;box-shadow:0 0 0 3px #3b82f64d}.sync-button:disabled{background:var(--text-muted);cursor:not-allowed;transform:none}.sync-button-loading{background:var(--text-secondary)}.sync-button-text{display:inline-block}.sync-button-spinner{display:none;width:14px;height:14px;border:2px solid rgba(255,255,255,.3);border-top-color:var(--text-inverse);border-radius:50%;animation:spin .8s linear infinite}.loading-indicator{display:none;flex-direction:column;align-items:center;justify-content:center;gap:var(--spacing-md);padding:var(--spacing-xl);background-color:var(--bg-primary);border-radius:var(--radius-lg);border:1px solid var(--border-color)}.loading-indicator-visible{display:flex}.loading-indicator-spinner{border:3px solid var(--border-color);border-top-color:var(--color-primary);border-radius:50%;animation:spin .8s linear infinite}.loading-indicator-small .loading-indicator-spinner{width:20px;height:20px;border-width:2px}.loading-indicator-medium .loading-indicator-spinner{width:36px;height:36px;border-width:3px}.loading-indicator-large .loading-indicator-spinner{width:48px;height:48px;border-width:4px}.loading-indicator-message{font-size:var(--font-size-base);color:var(--text-secondary);text-align:center}.error-message{display:none;align-items:flex-start;gap:var(--spacing-md);padding:var(--spacing-md) var(--spacing-lg);border-radius:var(--radius-lg);border:1px solid;animation:slideIn .3s ease}.error-message-visible{display:flex}.error-message-icon{font-size:var(--font-size-xl);flex-shrink:0;line-height:1}.error-message-content{flex:1;min-width:0}.error-message-text{font-size:var(--font-size-base);line-height:1.5}.error-message-dismiss{flex-shrink:0;width:28px;height:28px;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-xl);font-weight:300;line-height:1;background:transparent;border:none;border-radius:var(--radius-md);cursor:pointer;opacity:.6;transition:opacity var(--transition-fast),background-color var(--transition-fast)}.error-message-dismiss:hover{opacity:1;background-color:#0000001a}.error-message-dismiss:focus{outline:none;opacity:1}.error-message-auth{background-color:#fef2f2;border-color:#fecaca;color:#991b1b}.error-message-auth .error-message-icon{color:#dc2626}.error-message-network{background-color:#fffbeb;border-color:#fde68a;color:#92400e}.error-message-network .error-message-icon{color:#f59e0b}.error-message-server{background-color:#fef3c7;border-color:#fcd34d;color:#78350f}.error-message-server .error-message-icon{color:#d97706}.error-message-notFound{background-color:#f0f9ff;border-color:#bae6fd;color:#075985}.error-message-notFound .error-message-icon{color:#0284c7}.error-message-generic{background-color:#f8fafc;border-color:#e2e8f0;color:#475569}.error-message-generic .error-message-icon{color:#64748b}@media(prefers-color-scheme:dark){.error-message-auth{background-color:#450a0a;border-color:#7f1d1d;color:#fecaca}.error-message-network{background-color:#451a03;border-color:#78350f;color:#fde68a}.error-message-server{background-color:#451a03;border-color:#78350f;color:#fcd34d}.error-message-notFound{background-color:#0c4a6e;border-color:#075985;color:#bae6fd}.error-message-generic{background-color:#334155;border-color:#475569;color:#cbd5e1}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes slideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@media(max-width:1024px){.app-sidebar{width:240px}.app-main{padding:var(--spacing-sm);gap:var(--spacing-sm)}}@media(max-width:768px){.app-main{flex-direction:column}.app-sidebar{width:100%;flex-direction:row;flex-wrap:wrap;gap:var(--spacing-sm)}.app-sidebar>*{flex:1 1 calc(50% - var(--spacing-xs));min-width:200px}.sync-button-container{flex:1 1 100%}.app-header{padding:var(--spacing-xs) var(--spacing-sm)}}@media(max-width:480px){.app-sidebar>*{flex:1 1 100%;min-width:0}.app-header{padding:var(--spacing-xs) var(--spacing-sm)}.app-title{font-size:var(--font-size-xl)}.app-subtitle{font-size:var(--font-size-sm)}.token-config-panel,.month-selector,.work-item-list{padding:var(--spacing-md)}.work-item{padding:var(--spacing-sm)}.work-item-header{flex-direction:column;align-items:flex-start;gap:var(--spacing-xs)}.work-item-hours{align-self:flex-start}.error-message{flex-direction:column;gap:var(--spacing-sm);padding:var(--spacing-md)}.error-message-dismiss{position:absolute;top:var(--spacing-sm);right:var(--spacing-sm)}.error-message{position:relative;padding-right:var(--spacing-2xl)}}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.mattermost-config-panel{background-color:var(--bg-primary);border-radius:var(--radius-lg);padding:var(--spacing-md);box-shadow:var(--shadow-sm);border:1px solid var(--border-color)}.mattermost-config-title{font-size:var(--font-size-sm);font-weight:600;margin-bottom:var(--spacing-sm);color:var(--text-primary);display:flex;align-items:center;gap:var(--spacing-xs)}.mattermost-config-title:before{content:"💬";font-size:var(--font-size-sm)}.mattermost-config-form{display:flex;flex-direction:column;gap:var(--spacing-sm)}.mattermost-config-section{display:flex;flex-direction:column;gap:var(--spacing-xs)}.mattermost-config-section-title{font-size:var(--font-size-xs);font-weight:600;color:var(--text-secondary);margin:0;padding-bottom:var(--spacing-xs);border-bottom:1px solid var(--border-color)}.mattermost-config-input-container{display:flex;flex-direction:column;gap:var(--spacing-xs)}.mattermost-config-label{font-size:var(--font-size-xs);font-weight:500;color:var(--text-secondary)}.mattermost-config-input{width:100%;padding:var(--spacing-xs) var(--spacing-sm);font-size:var(--font-size-sm);font-family:inherit;border:1px solid var(--border-color);border-radius:var(--radius-md);background-color:var(--bg-primary);color:var(--text-primary);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.mattermost-config-input:focus{outline:none;border-color:var(--border-color-focus);box-shadow:0 0 0 3px #3b82f61a}.mattermost-config-input::placeholder{color:var(--text-muted)}.mattermost-config-input-error{border-color:var(--color-error)}.mattermost-config-input-error:focus{box-shadow:0 0 0 3px #ef44441a}.mattermost-config-button-container{margin-bottom:var(--spacing-md)}.mattermost-config-save-button{width:100%;padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-base);font-weight:500;font-family:inherit;color:var(--text-inverse);background-color:var(--color-primary);border:none;border-radius:var(--radius-md);cursor:pointer;transition:background-color var(--transition-fast),transform var(--transition-fast)}.mattermost-config-save-button:hover{background-color:var(--color-primary-hover)}.mattermost-config-save-button:active{background-color:var(--color-primary-active);transform:scale(.98)}.mattermost-config-save-button:focus{outline:none;box-shadow:0 0 0 3px #3b82f64d}.mattermost-config-save-button:disabled{background-color:var(--text-muted);cursor:not-allowed;transform:none}.mattermost-config-status-container{display:flex;align-items:center;gap:var(--spacing-xs);font-size:var(--font-size-sm);margin-top:var(--spacing-xs)}.mattermost-config-status-label{color:var(--text-secondary)}.mattermost-config-status-value{font-weight:500}.mattermost-config-status-saved{color:var(--color-success)}.mattermost-config-status-not-saved{color:var(--text-muted)}.mattermost-config-error-container{margin-top:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background-color:var(--color-error-light);border:1px solid var(--color-error-border);border-radius:var(--radius-md)}.mattermost-config-error-message{color:var(--color-error);font-size:var(--font-size-sm)}@media(max-width:480px){.mattermost-config-panel{padding:var(--spacing-md)}}.check-in-display{background-color:var(--bg-primary);border-radius:var(--radius-lg);padding:var(--spacing-lg);box-shadow:var(--shadow-sm);border:1px solid var(--border-color)}.check-in-display-title{font-size:var(--font-size-lg);font-weight:600;margin-bottom:var(--spacing-md);color:var(--text-primary);padding-bottom:var(--spacing-sm);border-bottom:1px solid var(--border-color)}.check-in-display-content{display:flex;flex-direction:column;gap:var(--spacing-md)}.check-in-display-empty{text-align:center;padding:var(--spacing-xl) var(--spacing-lg);color:var(--text-muted);font-size:var(--font-size-base);background-color:var(--bg-tertiary);border-radius:var(--radius-md);border:2px dashed var(--border-color)}.check-in-display-section{display:flex;flex-direction:column;gap:var(--spacing-xs)}.check-in-display-label{font-size:var(--font-size-sm);font-weight:500;color:var(--text-secondary)}.check-in-display-focus-task{background:linear-gradient(135deg,var(--bg-secondary) 0%,var(--bg-tertiary) 100%);border-radius:var(--radius-md);padding:var(--spacing-md);border-left:4px solid var(--color-primary)}.check-in-display-focus-task-value{font-size:var(--font-size-lg);font-weight:600;color:var(--text-primary);line-height:1.5}.check-in-display-time{background-color:var(--bg-secondary);border-radius:var(--radius-md);padding:var(--spacing-sm) var(--spacing-md)}.check-in-display-time-value{font-size:var(--font-size-base);font-weight:500;color:var(--text-primary)}@media(max-width:480px){.check-in-display{padding:var(--spacing-md)}.check-in-display-focus-task-value{font-size:var(--font-size-base)}}.sync-status-indicator{display:inline-flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:500}.sync-status-indicator-text{line-height:1}.sync-status-indicator-synced{background-color:#22c55e1a;color:var(--color-success);border:1px solid rgba(34,197,94,.3)}.sync-status-indicator-not-synced{background-color:#ef44441a;color:var(--color-error);border:1px solid rgba(239,68,68,.3)}.sync-status-indicator-unknown{background-color:#f59e0b1a;color:var(--color-warning);border:1px solid rgba(245,158,11,.3)}@media(prefers-color-scheme:dark){.sync-status-indicator-synced{background-color:#22c55e33;border-color:#22c55e66}.sync-status-indicator-not-synced{background-color:#ef444433;border-color:#ef444466}.sync-status-indicator-unknown{background-color:#f59e0b33;border-color:#f59e0b66}}.fetch-checkin-button-container{margin-top:var(--spacing-md)}.fetch-checkin-button{width:100%;display:flex;align-items:center;justify-content:center;gap:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-base);font-weight:500;font-family:inherit;color:var(--text-inverse);background-color:var(--color-secondary);border:none;border-radius:var(--radius-md);cursor:pointer;transition:background-color var(--transition-fast),transform var(--transition-fast)}.fetch-checkin-button:hover:not(:disabled){background-color:var(--bg-dark)}.fetch-checkin-button:active:not(:disabled){transform:scale(.98)}.fetch-checkin-button:focus{outline:none;box-shadow:0 0 0 3px #64748b4d}.fetch-checkin-button:disabled{background-color:var(--text-muted);cursor:not-allowed;transform:none}.fetch-checkin-button-loading{background-color:var(--text-secondary)}.fetch-checkin-button-text{display:inline-block}.fetch-checkin-button-spinner{display:none;width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:var(--text-inverse);border-radius:50%;animation:spin .8s linear infinite}.fetch-checkin-button-loading .fetch-checkin-button-spinner{display:inline-block}.app-checkin-section{background-color:var(--bg-primary);border-radius:var(--radius-lg);padding:var(--spacing-lg);box-shadow:var(--shadow-sm);border:1px solid var(--border-color);display:flex;flex-direction:column;gap:var(--spacing-md)}.app-section-title{font-size:var(--font-size-lg);font-weight:600;color:var(--text-primary);margin:0;padding-bottom:var(--spacing-sm);border-bottom:1px solid var(--border-color)}@media(max-width:480px){.app-checkin-section{padding:var(--spacing-md)}}.token-config-instructions,.mattermost-config-instructions{font-size:var(--font-size-sm);color:var(--text-secondary);margin-bottom:var(--spacing-sm)}.token-config-curl-input,.mattermost-config-curl-input{width:100%;padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-sm);font-family:Monaco,Menlo,Ubuntu Mono,monospace;border:1px solid var(--border-color);border-radius:var(--radius-md);background-color:var(--bg-secondary);color:var(--text-primary);resize:vertical;min-height:80px;transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.token-config-curl-input:focus,.mattermost-config-curl-input:focus{outline:none;border-color:var(--border-color-focus);box-shadow:0 0 0 3px #3b82f61a}.token-config-curl-input::placeholder,.mattermost-config-curl-input::placeholder{color:var(--text-muted);font-family:inherit}.token-config-curl-input.token-input-error,.mattermost-config-curl-input.mattermost-config-input-error{border-color:var(--color-error)}.mattermost-config-info{margin-top:var(--spacing-sm);padding:var(--spacing-sm) var(--spacing-md);background-color:var(--bg-tertiary);border-radius:var(--radius-md);font-size:var(--font-size-sm)}.mattermost-config-info-item{color:var(--text-secondary);margin-bottom:var(--spacing-xs)}.mattermost-config-info-item:last-child{margin-bottom:0}.mattermost-config-info-item strong{color:var(--text-primary)}.calendar-view{background-color:var(--bg-primary);border-radius:var(--radius-lg);padding:var(--spacing-lg);box-shadow:var(--shadow-sm);border:1px solid var(--border-color)}.calendar-header{display:flex;justify-content:center;align-items:center;gap:var(--spacing-md);margin-bottom:var(--spacing-md)}.calendar-nav-btn{width:36px;height:36px;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-2xl);font-weight:500;color:var(--text-secondary);background-color:var(--bg-secondary);border:1px solid var(--border-color);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.calendar-nav-btn:hover{background-color:var(--bg-tertiary);color:var(--text-primary);border-color:var(--text-muted)}.calendar-nav-btn:active{transform:scale(.95)}.calendar-month-year{font-size:var(--font-size-xl);font-weight:600;color:var(--text-primary);min-width:150px;text-align:center}.calendar-weekdays{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:var(--spacing-xs)}.calendar-weekday{text-align:center;font-size:var(--font-size-sm);font-weight:600;color:var(--text-secondary);padding:var(--spacing-xs)}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.calendar-day{position:relative;aspect-ratio:1;min-height:60px;padding:var(--spacing-xs);background-color:var(--bg-secondary);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast);display:flex;flex-direction:column;align-items:center}.calendar-day:hover{background-color:var(--bg-tertiary);transform:scale(1.02)}.calendar-day-other-month{opacity:.3;cursor:default}.calendar-day-other-month:hover{transform:none}.calendar-day-weekend{background-color:var(--bg-tertiary)}.calendar-day-today{border:2px solid var(--color-primary)}.calendar-day-synced{background-color:#22c55e26;border-left:3px solid var(--color-success)}.calendar-day-not-synced{background-color:#ef44441a;border-left:3px solid var(--color-error)}.calendar-day-has-checkin{box-shadow:inset 0 -3px 0 var(--color-primary)}.calendar-day-number{font-size:var(--font-size-sm);font-weight:600;color:var(--text-primary)}.calendar-day-hours{font-size:var(--font-size-xs);font-weight:700;color:var(--text-inverse);background-color:var(--color-success);padding:2px 6px;border-radius:var(--radius-full);margin-top:auto}.calendar-day-checkin-dot{position:absolute;top:4px;right:4px;width:8px;height:8px;background-color:var(--color-primary);border-radius:50%}.calendar-legend{display:flex;justify-content:center;gap:var(--spacing-lg);margin-top:var(--spacing-md);padding-top:var(--spacing-md);border-top:1px solid var(--border-color);flex-wrap:wrap}.calendar-legend-item{display:flex;align-items:center;gap:var(--spacing-xs);font-size:var(--font-size-sm);color:var(--text-secondary)}.calendar-legend-dot{width:12px;height:12px;border-radius:var(--radius-sm)}.calendar-legend-dot.synced{background-color:#22c55e4d;border-left:3px solid var(--color-success)}.calendar-legend-dot.not-synced{background-color:#ef444426;border-left:3px solid var(--color-error)}.calendar-legend-dot.checkin{background-color:var(--color-primary);border-radius:50%;width:10px;height:10px}@media(max-width:768px){.calendar-day{min-height:50px;padding:2px}.calendar-day-number{font-size:var(--font-size-xs)}.calendar-day-hours{font-size:10px;padding:1px 4px}.calendar-legend{gap:var(--spacing-md)}}@media(max-width:480px){.calendar-view{padding:var(--spacing-md)}.calendar-day{min-height:40px}.calendar-legend{flex-direction:column;align-items:center;gap:var(--spacing-sm)}}.calendar-modal{display:none;position:fixed;inset:0;z-index:1000}.calendar-modal-visible{display:block}.calendar-modal-backdrop{position:absolute;inset:0;background-color:#00000080;animation:fadeIn .2s ease}.calendar-modal-content{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background-color:var(--bg-primary);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);width:90%;max-width:500px;max-height:80vh;overflow:hidden;display:flex;flex-direction:column;animation:modalFadeIn .2s ease}@keyframes modalFadeIn{0%{opacity:0;transform:translate(-50%,-50%) scale(.95)}to{opacity:1;transform:translate(-50%,-50%) scale(1)}}.calendar-modal-header{display:flex;justify-content:space-between;align-items:center;padding:var(--spacing-md) var(--spacing-lg);border-bottom:1px solid var(--border-color);background-color:var(--bg-secondary)}.calendar-modal-title{font-size:var(--font-size-lg);font-weight:600;color:var(--text-primary);margin:0}.calendar-modal-close{width:32px;height:32px;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-2xl);font-weight:300;color:var(--text-secondary);background:transparent;border:none;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.calendar-modal-close:hover{background-color:var(--bg-tertiary);color:var(--text-primary)}.calendar-modal-body{padding:var(--spacing-lg);overflow-y:auto;flex:1}.calendar-modal-section{margin-bottom:var(--spacing-lg)}.calendar-modal-section:last-child{margin-bottom:0}.calendar-modal-section-title{font-size:var(--font-size-base);font-weight:600;color:var(--text-primary);margin:0 0 var(--spacing-sm) 0;padding-bottom:var(--spacing-xs);border-bottom:1px solid var(--border-color)}.calendar-modal-checkin{background:linear-gradient(135deg,var(--bg-secondary) 0%,var(--bg-tertiary) 100%);border-radius:var(--radius-md);padding:var(--spacing-md);border-left:4px solid var(--color-primary)}.calendar-modal-focus{font-size:var(--font-size-base);font-weight:500;color:var(--text-primary);margin:0 0 var(--spacing-xs) 0;line-height:1.5}.calendar-modal-time{font-size:var(--font-size-sm);color:var(--text-secondary);margin:0}.calendar-modal-items{display:flex;flex-direction:column;gap:var(--spacing-sm)}.calendar-modal-item{background-color:var(--bg-secondary);border-radius:var(--radius-md);padding:var(--spacing-md);border:1px solid var(--border-color)}.calendar-modal-item-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--spacing-xs)}.calendar-modal-item-time{font-size:var(--font-size-sm);color:var(--text-secondary)}.calendar-modal-item-hours{font-size:var(--font-size-sm);font-weight:700;color:var(--text-inverse);background-color:var(--color-success);padding:2px 8px;border-radius:var(--radius-full)}.calendar-modal-item-desc{font-size:var(--font-size-base);color:var(--text-primary);margin:0 0 var(--spacing-xs) 0;line-height:1.5}.calendar-modal-item-meta{display:flex;flex-wrap:wrap;gap:var(--spacing-xs)}.calendar-modal-item-project,.calendar-modal-item-task{font-size:var(--font-size-xs);color:var(--text-secondary);background-color:var(--bg-tertiary);padding:2px 8px;border-radius:var(--radius-sm)}.calendar-modal-empty{text-align:center;padding:var(--spacing-xl) var(--spacing-lg);color:var(--text-muted)}.calendar-modal-empty p{margin:0;font-size:var(--font-size-lg)}.calendar-modal-empty-hint{font-size:var(--font-size-sm)!important;margin-top:var(--spacing-sm)!important}@media(max-width:480px){.calendar-modal-content{width:95%;max-height:90vh}.calendar-modal-header{padding:var(--spacing-sm) var(--spacing-md)}.calendar-modal-body{padding:var(--spacing-md)}}.timesheet-form{display:flex;flex-direction:column;gap:var(--spacing-md)}.timesheet-form-row{display:flex;flex-direction:column;gap:var(--spacing-xs)}.timesheet-form-label{font-size:var(--font-size-sm);font-weight:500;color:var(--text-secondary)}.timesheet-form-input,.timesheet-form-select,.timesheet-form-textarea{width:100%;padding:var(--spacing-sm);font-size:var(--font-size-sm);font-family:inherit;border:1px solid var(--border-color);border-radius:var(--radius-md);background-color:var(--bg-primary);color:var(--text-primary);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.timesheet-form-input:focus,.timesheet-form-select:focus,.timesheet-form-textarea:focus{outline:none;border-color:var(--border-color-focus);box-shadow:0 0 0 3px #3b82f61a}.timesheet-form-textarea{resize:vertical;min-height:60px}.timesheet-form-time-row{flex-direction:row;gap:var(--spacing-md)}.timesheet-form-time-group{flex:1;display:flex;flex-direction:column;gap:var(--spacing-xs)}.timesheet-form-time-inputs{display:flex;align-items:center;gap:var(--spacing-xs)}.timesheet-form-time-inputs span{font-weight:600;color:var(--text-secondary)}.timesheet-form-hour,.timesheet-form-minute{width:auto;flex:1;text-align:center}.timesheet-form-submit{width:100%;padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-base);font-weight:600;font-family:inherit;color:var(--text-inverse);background-color:var(--color-primary);border:none;border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);display:flex;align-items:center;justify-content:center;gap:var(--spacing-sm)}.timesheet-form-submit:hover:not(:disabled){background-color:var(--color-primary-hover)}.timesheet-form-submit:active:not(:disabled){background-color:var(--color-primary-active);transform:scale(.98)}.timesheet-form-submit:disabled{background-color:var(--text-muted);cursor:not-allowed}.timesheet-form-submit.loading .ts-submit-text{display:none}.timesheet-form-submit.loading .ts-submit-spinner{display:inline-block}.ts-submit-spinner{display:none;width:18px;height:18px;border:2px solid rgba(255,255,255,.3);border-top-color:var(--text-inverse);border-radius:50%;animation:spin .8s linear infinite}.timesheet-form-message{text-align:center;font-size:var(--font-size-sm);font-weight:500;padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-md);min-height:24px}.timesheet-form-message.success{color:var(--color-success);background-color:#22c55e1a}.timesheet-form-message.error{color:var(--color-error);background-color:#ef44441a}@media(max-width:480px){.timesheet-form-time-row{flex-direction:column}}.project-search-container{display:flex;flex-direction:column;gap:var(--spacing-xs)}.project-search-input{width:100%;padding:var(--spacing-sm);font-size:var(--font-size-sm);font-family:inherit;border:1px solid var(--border-color);border-radius:var(--radius-md);background-color:var(--bg-secondary);color:var(--text-primary);transition:border-color var(--transition-fast),box-shadow var(--transition-fast)}.project-search-input:focus{outline:none;border-color:var(--border-color-focus);box-shadow:0 0 0 3px #3b82f61a;background-color:var(--bg-primary)}.project-search-input::placeholder{color:var(--text-muted)}.app-footer{background-color:var(--bg-primary);border-top:1px solid var(--border-color);padding:var(--spacing-md) var(--spacing-lg);margin-top:auto}.app-footer-content{max-width:var(--max-content-width);margin:0 auto;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--spacing-sm)}.app-footer-coffee{display:inline-flex;align-items:center;gap:var(--spacing-xs);padding:var(--spacing-xs) var(--spacing-md);background:linear-gradient(135deg,#ff5f5f,#ff8f8f);color:#fff;text-decoration:none;border-radius:var(--radius-full);font-size:var(--font-size-sm);font-weight:500;transition:all var(--transition-fast)}.app-footer-coffee:hover{transform:translateY(-2px);box-shadow:0 4px 12px #ff5f5f66}.app-footer-copyright{font-size:var(--font-size-sm);color:var(--text-secondary)}.app-footer-copyright a{color:var(--color-primary);text-decoration:none;transition:color var(--transition-fast)}.app-footer-copyright a:hover{color:var(--color-primary-hover);text-decoration:underline}@media(max-width:480px){.app-footer-content{flex-direction:column;text-align:center}}.timesheet-entries{margin-bottom:var(--spacing-sm)}.timesheet-entries-list{display:flex;flex-direction:column;gap:var(--spacing-xs)}.timesheet-entry-item{display:flex;align-items:center;gap:var(--spacing-sm);padding:var(--spacing-sm);background-color:var(--bg-secondary);border-radius:var(--radius-md);border:1px solid var(--border-color);position:relative;cursor:pointer;transition:all var(--transition-fast)}.timesheet-entry-item:hover{background-color:var(--bg-tertiary);border-color:var(--color-primary)}.timesheet-entry-item.editing{background-color:#3b82f61a;border-color:var(--color-primary);box-shadow:0 0 0 2px #3b82f633}.timesheet-entry-number{font-size:var(--font-size-xs);font-weight:700;color:var(--text-inverse);background-color:var(--color-primary);padding:2px 6px;border-radius:var(--radius-sm);flex-shrink:0}.timesheet-entry-new{display:flex;align-items:center;justify-content:center;padding:var(--spacing-sm);background-color:transparent;border-radius:var(--radius-md);border:1px dashed var(--border-color);cursor:pointer;transition:all var(--transition-fast);color:var(--text-muted);font-size:var(--font-size-sm)}.timesheet-entry-new:hover{background-color:var(--bg-tertiary);border-color:var(--color-primary);color:var(--color-primary)}.timesheet-entry-new.active{background-color:#3b82f61a;border-color:var(--color-primary);border-style:solid;color:var(--color-primary)}.timesheet-entry-info{display:flex;flex-direction:column;gap:2px;min-width:100px}.timesheet-entry-time{font-size:var(--font-size-xs);font-weight:600;color:var(--color-primary)}.timesheet-entry-project{font-size:var(--font-size-xs);color:var(--text-secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:120px}.timesheet-entry-desc{flex:1;font-size:var(--font-size-sm);color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.timesheet-entry-remove{width:24px;height:24px;display:flex;align-items:center;justify-content:center;font-size:var(--font-size-lg);font-weight:300;color:var(--text-muted);background:transparent;border:none;border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast);flex-shrink:0}.timesheet-entry-remove:hover{background-color:#ef44441a;color:var(--color-error)}.timesheet-form-buttons{flex-direction:row;gap:var(--spacing-sm)}.timesheet-form-add{flex:1;padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-sm);font-weight:500;font-family:inherit;color:var(--color-primary);background-color:transparent;border:1px dashed var(--color-primary);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.timesheet-form-add:hover{background-color:#3b82f61a;border-style:solid}.timesheet-form-add:active{transform:scale(.98)}@media(max-width:480px){.timesheet-form-buttons{flex-direction:column}.timesheet-entry-info{min-width:80px}.timesheet-entry-project{max-width:80px}}.timesheet-form-skeleton{display:flex;flex-direction:column;gap:var(--spacing-md);padding:var(--spacing-md) 0}.timesheet-form-skeleton.hidden,.timesheet-form-wrapper.hidden{display:none}.skeleton-row{display:flex;flex-direction:column;gap:var(--spacing-xs)}.skeleton-label{width:60px;height:14px;background:linear-gradient(90deg,var(--bg-tertiary) 25%,var(--bg-secondary) 50%,var(--bg-tertiary) 75%);background-size:200% 100%;animation:skeleton-shimmer 1.5s infinite;border-radius:var(--radius-sm)}.skeleton-input{width:100%;height:38px;background:linear-gradient(90deg,var(--bg-tertiary) 25%,var(--bg-secondary) 50%,var(--bg-tertiary) 75%);background-size:200% 100%;animation:skeleton-shimmer 1.5s infinite;border-radius:var(--radius-md)}.skeleton-time-row{flex-direction:row;gap:var(--spacing-md)}.skeleton-time-group{flex:1;display:flex;flex-direction:column;gap:var(--spacing-xs)}.skeleton-input-small{width:100%;height:38px;background:linear-gradient(90deg,var(--bg-tertiary) 25%,var(--bg-secondary) 50%,var(--bg-tertiary) 75%);background-size:200% 100%;animation:skeleton-shimmer 1.5s infinite;border-radius:var(--radius-md)}.skeleton-textarea{width:100%;height:60px;background:linear-gradient(90deg,var(--bg-tertiary) 25%,var(--bg-secondary) 50%,var(--bg-tertiary) 75%);background-size:200% 100%;animation:skeleton-shimmer 1.5s infinite;border-radius:var(--radius-md)}.skeleton-button{width:100%;height:40px;background:linear-gradient(90deg,var(--bg-tertiary) 25%,var(--bg-secondary) 50%,var(--bg-tertiary) 75%);background-size:200% 100%;animation:skeleton-shimmer 1.5s infinite;border-radius:var(--radius-md);margin-top:var(--spacing-sm)}@keyframes skeleton-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-secondary);border-radius:var(--radius-full)}::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:var(--radius-full);border:2px solid var(--bg-secondary)}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}::-webkit-scrollbar-corner{background:var(--bg-secondary)}*{scrollbar-width:thin;scrollbar-color:var(--border-color) var(--bg-secondary)}.calendar-modal-body::-webkit-scrollbar{width:6px}.calendar-modal-body::-webkit-scrollbar-track{background:var(--bg-primary);border-radius:var(--radius-full)}.calendar-modal-body::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:var(--radius-full)}.calendar-modal-body::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}select::-webkit-scrollbar{width:6px}select::-webkit-scrollbar-track{background:var(--bg-primary)}select::-webkit-scrollbar-thumb{background:var(--border-color);border-radius:var(--radius-full)}select::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.calendar-modal-item-actions{display:flex;align-items:center;gap:var(--spacing-xs)}.work-item-action-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-md);cursor:pointer;color:var(--text-secondary);transition:all var(--transition-fast)}.work-item-action-btn:hover{transform:scale(1.05)}.work-item-action-btn.work-item-edit-btn:hover{background-color:#3b82f626;border-color:var(--color-primary);color:var(--color-primary)}.work-item-action-btn.work-item-delete-btn:hover{background-color:#ef444426;border-color:var(--color-error);color:var(--color-error)}.work-item-action-btn:active{transform:scale(.95)}.work-item-action-btn svg{width:14px;height:14px}.ts-add-button-container{padding:var(--spacing-md) 0}.ts-add-button-container.hidden{display:none}.ts-add-button{width:100%;padding:var(--spacing-md);font-size:var(--font-size-base);font-weight:500;font-family:inherit;color:var(--color-primary);background-color:transparent;border:2px dashed var(--color-primary);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.ts-add-button:hover{background-color:#3b82f61a;border-style:solid}.ts-add-button:active{transform:scale(.98)}.ts-form-section.hidden{display:none}.timesheet-form-cancel{padding:var(--spacing-sm) var(--spacing-md);font-size:var(--font-size-base);font-weight:500;font-family:inherit;color:var(--text-secondary);background-color:var(--bg-tertiary);border:1px solid var(--border-color);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast)}.timesheet-form-cancel:hover{background-color:var(--bg-secondary);border-color:var(--text-muted)}.timesheet-form-cancel:active{transform:scale(.98)}.timesheet-form-cancel.hidden{display:none}.timesheet-form-buttons{display:flex;gap:var(--spacing-sm)}.timesheet-form-buttons .timesheet-form-submit{flex:1}
