*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #f5f6f8;--surface: #ffffff;--border: #e0e3e8;--border-light: #eef0f3;--text: #1a1d23;--text-muted: #6b7280;--text-light: #9ca3af;--primary: #4f6ef7;--primary-hover: #3b5de7;--primary-light: #c7d0fc;--danger: #ef4444;--header-height: 44px;--radius: 6px;--radius-sm: 3px}html,body,#root{height:100vh;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text)}#root{display:flex;flex-direction:column;height:100vh}.btn{padding:5px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-size:12px;font-weight:500;cursor:pointer;display:flex;align-items:center;gap:4px;transition:background .1s;font-family:inherit}.btn:hover{background:var(--bg)}.btn-icon{width:30px;height:30px;padding:0;justify-content:center}.btn-primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn-primary:hover{background:var(--primary-hover);border-color:var(--primary-hover)}.btn-danger{color:var(--danger);border-color:var(--danger)}.btn-danger:hover{background:#fee2e2}.nav-btn{height:28px;border:none;border-radius:var(--radius-sm);background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:4px;font-size:12px;font-weight:500;color:var(--text-muted);padding:0 8px;transition:color .1s,background .1s;font-family:inherit}.nav-btn:hover{color:var(--text);background:var(--bg)}.nav-btn.active{color:var(--primary);background:#4f6ef714}.modal-overlay{position:fixed;inset:0;background:#00000059;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:var(--surface);border-radius:8px;width:400px;max-width:92vw;box-shadow:0 16px 48px #0003}.modal-lg,.project-edit-modal{width:560px}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid var(--border)}.modal-header h2{font-size:14px;font-weight:600}.modal-close{width:24px;height:24px;border:none;background:transparent;font-size:16px;cursor:pointer;color:var(--text-muted);border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center}.modal-close:hover{background:var(--bg)}.modal-body{padding:14px}.form-group{margin-bottom:12px}.form-group label{display:block;font-size:12px;font-weight:500;color:var(--text-muted);margin-bottom:4px}.form-group input:not([type=checkbox]),.form-group select{width:100%;padding:6px 8px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:13px;font-family:inherit;color:var(--text);background:var(--surface);outline:none}.checkbox-list{display:flex;flex-direction:column;gap:2px;margin-top:4px}.checkbox-list-item{display:flex;align-items:center;gap:8px;padding:5px 8px;border-radius:var(--radius-sm);cursor:pointer;font-size:13px;color:var(--text);transition:background .06s}.checkbox-list-item:hover{background:var(--bg)}.checkbox-list-item input[type=checkbox]{width:14px;height:14px;flex-shrink:0;cursor:pointer;accent-color:var(--primary)}.checkbox-list-item .checkbox-list-rate{margin-left:auto;width:130px}.checkbox-inline{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--text);cursor:pointer;padding:6px 0}.checkbox-inline input[type=checkbox]{width:14px;height:14px;flex-shrink:0;cursor:pointer;accent-color:var(--primary)}.form-group input:focus,.form-group select:focus{border-color:var(--primary)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.form-actions{display:flex;justify-content:flex-end;gap:6px;padding-top:8px}.login-screen{position:fixed;inset:0;background:var(--bg);display:flex;align-items:center;justify-content:center;z-index:500}.login-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:40px;text-align:center;box-shadow:0 8px 30px #00000014;max-width:340px;width:100%}.login-card h1{font-size:20px;font-weight:700;margin-bottom:8px}.login-card p{font-size:13px;color:var(--text-muted);margin-bottom:24px}.login-btn{width:100%;justify-content:center;padding:10px 16px;font-size:13px;border-radius:999px;gap:8px}.login-error{margin-top:12px;font-size:12px;color:var(--danger)}::-webkit-scrollbar{height:6px;width:6px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:#c4c8cf;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#a0a5ad}.app-root{display:flex;flex-direction:column;height:100vh;overflow:hidden}.app-main{flex:1;overflow:auto;background:var(--bg)}.data-loading{display:flex;align-items:center;justify-content:center;height:100%}.spinner{width:28px;height:28px;border:3px solid var(--border);border-top-color:var(--primary);border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.app-header{display:flex;align-items:center;justify-content:space-between;height:var(--header-height);padding:0 14px;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0;gap:12px;z-index:10}.app-logo{font-size:15px;font-weight:700;letter-spacing:-.02em;display:flex;align-items:center;white-space:nowrap}.header-left{display:flex;align-items:center}.header-center{display:flex;align-items:center;gap:4px}.header-right{display:flex;align-items:center;gap:8px}.user-avatar-wrap{display:flex;align-items:center}.debug-switcher{display:flex;align-items:center;gap:4px;border:1px dashed var(--border);border-radius:var(--radius-sm);padding:2px 6px}.debug-select{font-size:11px;font-family:inherit;border:none;background:transparent;color:var(--text-muted);cursor:pointer;outline:none}.user-avatar{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:700;color:#fff;flex-shrink:0}.user-avatar-img{object-fit:cover}.member-avatar{width:22px;height:22px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:9px;font-weight:700;color:#fff;flex-shrink:0}.member-avatar-img{object-fit:cover}.project-list-view{padding:24px;max-width:1100px;margin:0 auto}.project-list-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.project-list-header h2{font-size:18px;font-weight:700}.project-tabs{display:flex;gap:4px;margin-bottom:16px}.project-grid-client{white-space:nowrap;font-weight:600}.project-grid-client .project-dot{vertical-align:middle;margin-right:6px}.project-grid-group-first td{border-top:2px solid var(--border)}.project-grid{width:100%;border-collapse:collapse;font-size:13px}.project-grid thead th{text-align:left;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);padding:0 12px 8px;border-bottom:1px solid var(--border)}.project-grid thead th:first-child{padding-left:0}.project-grid-row{cursor:pointer;border-bottom:1px solid var(--border);transition:background .06s}.project-grid-row:hover{background:var(--bg)}.project-grid-row:last-child{border-bottom:none}.project-grid-row.finished{opacity:.55}.project-grid-row td{padding:11px 12px;vertical-align:middle;background:var(--surface)}.project-grid-name{font-weight:600;margin-right:6px}.project-grid-muted{color:var(--text-muted)}.project-grid-rate{font-weight:600;color:var(--primary);white-space:nowrap}.project-grid-sow{width:100px}.sow-badge-inline{display:flex;align-items:center;gap:6px}.sow-badge-bar{flex:1;height:4px;background:var(--border);border-radius:2px;overflow:hidden;min-width:40px}.sow-badge-fill{height:100%;border-radius:2px;transition:width .2s}.sow-badge-fill.sow-ok{background:#34d399}.sow-badge-fill.sow-warn{background:#fbbf24}.sow-badge-fill.sow-over{background:#ef4444}.sow-badge-text{font-size:11px;font-weight:600;color:var(--text-muted);min-width:28px;text-align:right}.project-card-archived-tag,.project-card-ended-tag{background:var(--bg);border:1px solid var(--border);border-radius:3px;padding:1px 5px;font-size:10px;color:var(--text-muted);margin-left:6px}.project-row-actions{display:flex;align-items:center;gap:2px}.project-row-btn{width:22px;height:22px;display:flex;align-items:center;justify-content:center;background:none;border:none;color:var(--text-muted);cursor:pointer;border-radius:3px;font-size:13px;flex-shrink:0}.project-row-btn:hover{background:var(--bg);color:var(--text)}.project-row-btn:disabled{opacity:.3;cursor:default}.project-row-btn:disabled:hover{background:none}.project-row-btn.archive-btn:hover{color:var(--text-muted)}.project-view{display:flex;flex-direction:column;height:100%;overflow:hidden}.project-view-header{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0}.project-view-title{display:flex;align-items:center;gap:10px}.project-dot{display:inline-block;width:10px;height:10px;border-radius:50%;flex-shrink:0;vertical-align:middle}.project-view-name{font-size:16px;font-weight:700;line-height:1.2}.project-view-client{font-size:12px;color:var(--text-muted)}.project-view-actions{display:flex;align-items:center;gap:8px}.time-table-wrap{flex:1;overflow:auto}.time-table{width:100%;border-collapse:collapse;font-size:12px;min-width:900px}.table-header-row th{padding:8px 10px;text-align:left;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);background:var(--surface);border-bottom:2px solid var(--border);white-space:nowrap;position:sticky;top:0;z-index:2}.col-date{width:100px}.col-task{min-width:160px}.col-sow{width:140px}.col-num{width:90px}.col-status{width:110px}.col-action{width:36px}.sow-select{font-size:11px;font-family:inherit;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);padding:2px 4px;cursor:pointer;outline:none;max-width:130px}.sow-select:focus{border-color:var(--primary)}.sow-select:disabled{opacity:.6;cursor:default}.col-derived-first{border-left:2px solid var(--border)}th.col-derived-first,th.col-derived{color:var(--text-light)}.time-table td{padding:6px 10px;border-bottom:1px solid var(--border-light);vertical-align:middle}.num-cell{text-align:right}.currency{font-variant-numeric:tabular-nums}.member-group-header td{background:var(--bg);border-bottom:1px solid var(--border);cursor:pointer;-webkit-user-select:none;user-select:none;padding:6px 10px}.member-group-header:hover td{background:#eceef1}.member-group-title{display:flex;align-items:center;gap:8px}.caret-icon{font-size:10px;color:var(--text-muted);flex-shrink:0}.member-group-name{font-weight:600;font-size:12px}.member-group-count{font-size:11px;color:var(--text-muted)}.member-totals-row td{background:#4f6ef70a;font-weight:600;border-top:1px solid var(--border-light);border-bottom:2px solid var(--border);font-size:11px}.totals-label{color:var(--text-muted);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.grand-totals-row td{background:var(--surface);font-weight:700;border-top:2px solid var(--border);border-bottom:none;font-size:13px}.add-entry-row td{padding:4px 10px;border-bottom:1px solid var(--border-light)}.add-entry-btn{font-size:11px}.entry-row:hover td{background:#4f6ef708}.entry-row .row-delete-btn{width:22px;height:22px;background:none;border:none;color:var(--text-light);cursor:pointer;border-radius:3px;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .1s;font-size:13px}.entry-row:hover .row-delete-btn{opacity:1}.entry-row .row-delete-btn:hover{background:#fee2e2;color:var(--danger)}.action-cell{text-align:center}.ctx-menu{position:fixed;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 4px 20px #0000001f;padding:4px;z-index:1000;min-width:190px}.ctx-menu-item{display:flex;align-items:center;gap:8px;width:100%;padding:6px 10px;border:none;background:none;font-family:inherit;font-size:12px;color:var(--text);cursor:pointer;border-radius:var(--radius-sm);text-align:left}.ctx-menu-item:hover{background:var(--bg)}.ctx-menu-item.danger{color:var(--danger)}.ctx-menu-item.danger:hover{background:#fee2e2}.ctx-menu-divider{height:1px;background:var(--border-light);margin:4px 0}.cell-text.editable{cursor:pointer;border-radius:2px;padding:1px 3px;margin:-1px -3px;min-width:20px;display:inline-block}.cell-text.editable:hover{background:#0000000f}.inline-input{background:none;border:1px solid var(--primary);border-radius:2px;outline:none;font-size:12px;font-family:inherit;color:var(--text);padding:1px 4px;width:100%;min-width:60px}.text-muted{color:var(--text-muted)}.status-badge{display:inline-flex;align-items:center;border-radius:4px;padding:2px 7px;font-size:10px;font-weight:600;white-space:nowrap;-webkit-user-select:none;user-select:none}.status-not_started{background:#e0e3e8;color:#6b7280}.status-in_progress{background:#4f6ef71f;color:#4f6ef7}.status-done{background:#10b9811f;color:#10b981}.settings-view{display:flex;min-height:calc(100vh - 56px)}.settings-sidebar{width:200px;flex-shrink:0;padding:24px;border-right:1px solid var(--border);background:var(--bg)}.settings-sidebar h2{font-size:18px;font-weight:700;margin-bottom:16px}.settings-nav{display:flex;flex-direction:column;gap:4px}.settings-nav-btn{display:flex;align-items:center;gap:8px;width:100%;padding:8px 12px;border:1px solid transparent;border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);font-size:13px;font-weight:500;cursor:pointer;font-family:inherit;text-align:left;transition:all .1s}.settings-nav-btn:hover{background:var(--surface)}.settings-nav-btn.active{background:var(--surface);color:var(--text);border-color:var(--border);font-weight:600}.settings-content{flex:1;padding:24px}.settings-list-inactive{opacity:.6}.tab-btn{display:flex;align-items:center;gap:5px;padding:5px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text-muted);font-size:12px;font-weight:500;cursor:pointer;font-family:inherit;transition:all .1s}.tab-btn.active{background:var(--primary);border-color:var(--primary);color:#fff}.tab-btn:not(.active):hover{background:var(--bg)}.settings-list{display:flex;flex-direction:column;gap:1px;background:var(--border-light);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;margin-bottom:16px}.settings-row{display:flex;align-items:center;gap:12px;padding:12px 14px;background:var(--surface);transition:background .06s}.settings-row.editing{background:#4f6ef708}.settings-row:not(.editing):hover{background:var(--bg)}.settings-row-info{flex:1;min-width:0}.settings-row-name{font-size:13px;font-weight:600;display:flex;align-items:center;gap:6px}.settings-row-meta{font-size:11px;color:var(--text-muted);margin-top:2px}.settings-row-actions{display:flex;gap:6px;flex-shrink:0}.settings-row-edit{flex:1;padding:8px 0}.settings-row-avatar{flex-shrink:0}.admin-badge{background:#4f6ef71f;color:#4f6ef7;border-radius:3px;padding:1px 6px;font-size:10px;font-weight:600}.settings-section{margin-top:24px}.settings-section-title{font-size:13px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin:0 0 8px}.admin-list{display:flex;flex-direction:column;gap:1px;background:var(--border-light);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;margin-bottom:8px}.admin-row{display:flex;align-items:center;gap:10px;padding:10px 14px;background:var(--surface)}.admin-row-name{font-size:13px;font-weight:500;flex:1}.admin-grant-row{display:flex;align-items:center;gap:8px;padding:6px 0}.admin-grant-row select{flex:1;padding:6px 28px 6px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-size:13px;font-family:inherit;outline:none;cursor:pointer;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 16 16'%3E%3Cpath fill='%236b7280' d='M8 10.5L2.5 5h11z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center}.admin-grant-row select:focus{border-color:var(--primary)}.archived-badge{background:var(--bg);border:1px solid var(--border);border-radius:3px;padding:1px 5px;font-size:10px;color:var(--text-muted)}.color-picker-row{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.color-swatch{width:18px;height:18px;border-radius:50%;cursor:pointer;border:2px solid transparent;transition:transform .1s}.color-swatch.selected{border-color:var(--text);transform:scale(1.2)}.color-swatch:not(.selected):hover{transform:scale(1.1)}.clients-projects-table{width:100%;border-collapse:separate;border-spacing:0;font-size:13px}.clients-projects-table thead th{text-align:left;font-size:11px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;padding:6px 10px;border-bottom:1px solid var(--border);white-space:nowrap}.cp-sortable-th{cursor:pointer;-webkit-user-select:none;user-select:none}.cp-sortable-th:hover{color:var(--text)}.cp-sort-icon{margin-left:3px;font-size:10px;vertical-align:middle}.cp-table-row td{padding:8px 10px;vertical-align:middle;border-bottom:1px solid var(--border-light);background:var(--surface)}.cp-table-group-first td{border-top:2px solid var(--border)}.clients-projects-table tbody tr:first-child td{border-top:none}.cp-table-row:hover td{background:var(--bg)}.cp-table-client{font-weight:600;white-space:nowrap}.cp-table-client .project-dot{display:inline-block;vertical-align:middle;margin-right:8px}.cp-table-project{font-weight:500}.cp-table-dates,.cp-table-rate{color:var(--text-muted);font-size:12px;white-space:nowrap}.cp-table-actions{text-align:right;white-space:nowrap;display:flex;gap:4px;justify-content:flex-end}.cp-table-actions .icon-btn{opacity:.4}.cp-table-row:hover .cp-table-actions .icon-btn{opacity:1}.cp-table-edit-row td{padding:16px 10px;background:var(--surface);border-bottom:1px solid var(--border-light)}.cp-table-edit-form{max-width:500px}.cp-inline-input{border:1px solid transparent;background:transparent;font:inherit;font-size:13px;padding:4px 6px;border-radius:var(--radius);width:100%;min-width:0;transition:border-color .1s,background .1s}.cp-inline-input:hover{border-color:var(--border)}.cp-inline-input:focus{outline:none;border-color:var(--primary);background:var(--surface)}.cp-rate-wrapper{display:flex;align-items:center;gap:2px}.cp-rate-prefix{color:var(--text-muted);font-size:12px;flex-shrink:0}.cp-inline-rate,.cp-inline-sow{width:65px;text-align:right}.cp-table-date{white-space:nowrap}.cp-inline-date{border:1px solid transparent!important;background:transparent!important;font-size:12px;padding:4px 6px;gap:4px}.cp-inline-date:hover{border-color:var(--border)!important}.cp-inline-date-muted{color:var(--text-muted)}.checkbox-list{display:flex;flex-direction:column;gap:1px;background:var(--border-light);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}label.checkbox-list-item{display:flex;align-items:center;gap:8px;padding:7px 10px;background:var(--surface);cursor:pointer;transition:background .06s;-webkit-user-select:none;user-select:none}label.checkbox-list-item:hover{background:var(--bg)}label.checkbox-list-item input[type=checkbox]{flex-shrink:0;width:14px;height:14px;margin:0;cursor:pointer;accent-color:var(--primary)}label.checkbox-list-item span{font-size:13px;font-weight:500;color:var(--text);flex:1}.checkbox-list-rate{width:90px;flex-shrink:0;padding:3px 7px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:12px;font-family:inherit;color:var(--text);background:var(--bg);outline:none;text-align:right}.checkbox-list-rate:focus{border-color:var(--primary)}.team-rate-table{width:100%;border-collapse:collapse;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;font-size:13px}.team-rate-table thead th{font-size:11px;font-weight:500;color:var(--text-muted);text-transform:uppercase;letter-spacing:.03em;padding:6px 10px;text-align:left;background:var(--bg);border-bottom:1px solid var(--border)}.team-rate-table tbody tr{border-bottom:1px solid var(--border-light)}.team-rate-table tbody tr:last-child{border-bottom:none}.team-rate-table tbody tr:hover{background:var(--bg)}.team-rate-table tbody td{padding:5px 10px}.team-check-col{width:28px;text-align:center}.team-check-col input[type=checkbox]{width:14px;height:14px;cursor:pointer;accent-color:var(--primary)}.team-member-label{cursor:pointer;font-weight:500;-webkit-user-select:none;user-select:none}.inactive-badge{font-size:10px;font-weight:600;color:var(--text-muted);background:var(--border-light);border-radius:3px;padding:1px 5px;margin-left:6px}.team-rate-col{width:120px;text-align:right}.team-rate-input{width:80px;padding:3px 7px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:12px;font-family:inherit;color:var(--text);text-align:right;float:right}.team-rate-input:focus{border-color:var(--primary);outline:none}.team-row-active{background:#4f6ef708}.new-project-form{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px;margin-top:8px}.reports-view{padding:24px;max-width:1000px;margin:0 auto}.monthly-chart-wrap{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px 20px 8px;margin-bottom:12px}.monthly-chart-header{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:12px}.monthly-chart-title{font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);display:flex;align-items:center;gap:6px}.member-cycle-btns{display:inline-flex;gap:2px}.member-cycle-btn{all:unset;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:var(--radius);color:var(--text-muted);transition:background .15s,color .15s}.member-cycle-btn:hover:not(:disabled){background:var(--border);color:var(--text)}.member-cycle-btn:disabled{opacity:.3;cursor:default}.col-check{width:32px;text-align:center}.batch-checkbox{cursor:pointer;width:15px;height:15px;accent-color:var(--primary)}.entry-selected{background:var(--primary-light)!important}.batch-action-bar{position:sticky;bottom:0;display:flex;align-items:center;gap:10px;padding:10px 16px;background:var(--surface);border-top:1px solid var(--border);box-shadow:0 -2px 8px #0000000f;z-index:5}.batch-count{font-size:13px;font-weight:600;color:var(--text);margin-right:4px}.batch-select{padding:5px 8px;font-size:13px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);color:var(--text);cursor:pointer}.datepicker-trigger{all:unset;cursor:pointer;display:inline-flex;align-items:center;gap:6px;padding:5px 10px;font-size:13px;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);white-space:nowrap;transition:border-color .15s}.datepicker-trigger:hover{border-color:var(--primary)}.datepicker-trigger i{color:var(--text-muted);font-size:14px}.datepicker-popover{position:fixed;z-index:1000;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:0 8px 24px #0000001f;padding:8px}.datepicker-popover .rdp-root{--rdp-accent-color: var(--primary);--rdp-accent-background-color: var(--primary-light);--rdp-day-height: 34px;--rdp-day-width: 34px;--rdp-day_button-height: 32px;--rdp-day_button-width: 32px;--rdp-day_button-border-radius: var(--radius);--rdp-nav-height: 36px;--rdp-nav_button-height: 28px;--rdp-nav_button-width: 28px;font-size:13px}.datepicker-popover .rdp-month_caption{font-size:13px;font-weight:600}.datepicker-popover .rdp-selected .rdp-day_button{background-color:var(--primary);color:#fff;border-color:var(--primary)}.datepicker-popover .rdp-today:not(.rdp-selected) .rdp-day_button{font-weight:700}.datepicker-popover .rdp-day_button:hover:not([disabled]){background-color:var(--bg)}.datepicker-trigger.datepicker-inline{padding:2px 6px;border:1px solid transparent;background:transparent;font-size:inherit}.datepicker-trigger.datepicker-inline:hover{border-color:var(--border);background:var(--surface)}.datepicker-trigger.datepicker-inline i{display:none}.monthly-chart-total{font-size:12px;color:var(--text-muted)}.chart-legend{display:flex;gap:12px;flex-wrap:wrap}.chart-legend-item{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--text-muted)}.chart-legend-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.chart-tooltip{background:var(--text);color:#fff;border-radius:6px;padding:8px 12px;font-size:12px;line-height:1.5;min-width:130px}.chart-tooltip-label{opacity:.6;margin-bottom:4px;font-size:11px}.chart-tooltip-row{display:flex;align-items:center;gap:6px}.chart-tooltip-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.chart-tooltip-name{flex:1}.chart-tooltip-hrs{font-weight:600}.chart-tooltip-total{margin-top:4px;padding-top:4px;border-top:1px solid rgba(255,255,255,.2);font-weight:600}.chart-tooltip-value{font-weight:600;font-size:14px}.reports-header{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:20px;gap:16px;flex-wrap:wrap}.reports-header h2{font-size:18px;font-weight:700}.reports-controls{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap}.month-nav{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:20px}.month-btn{padding:4px 10px;border:1px solid var(--border);border-radius:20px;background:transparent;color:var(--text-light);font-size:12px;cursor:pointer;transition:all .15s}.month-btn:hover{border-color:var(--primary);color:var(--primary)}.month-btn.active{background:var(--primary);border-color:var(--primary);color:#fff}.reports-table-wrap{overflow-x:auto}.reports-table{width:100%;border-collapse:collapse;font-size:13px}.reports-table th{padding:8px 12px;text-align:left;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);border-bottom:2px solid var(--border);white-space:nowrap}.reports-table td{padding:8px 12px;border-bottom:1px solid var(--border-light)}.report-project-row{font-weight:600}.report-project-row:hover td,.report-member-row:hover td{background:#4f6ef708}.report-member-row td{font-size:12px;color:var(--text-muted)}.report-member-indent{padding-left:28px!important;display:flex;align-items:center}.report-totals-row td{background:var(--bg);border-top:2px solid var(--border)}.positive{color:#10b981}.negative{color:var(--danger)}.budget-health-view{padding:24px;max-width:1000px;margin:0 auto}.reports-section{margin-top:32px}.reports-section-title{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);margin-bottom:12px}.budget-grid{display:flex;flex-direction:column;gap:6px}.budget-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:10px 14px;display:grid;grid-template-columns:200px 1fr auto;align-items:center;gap:16px}.budget-card-info{min-width:0}.budget-card-name{font-weight:600;font-size:13px}.budget-card-client{font-size:11px;color:var(--text-muted)}.budget-card-type{font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:var(--text-light)}.budget-bar-col{display:flex;flex-direction:column;gap:4px}.budget-bar-wrap{background:var(--border-light);border-radius:3px;height:6px;overflow:hidden}.budget-bar{height:100%;border-radius:3px;transition:width .3s}.budget-bar.ok{background:#10b981}.budget-bar.warn{background:#f59e0b}.budget-bar.over{background:var(--danger)}.budget-card-stat{font-size:11px;color:var(--text-muted)}.budget-pct{font-weight:700;font-size:14px;text-align:right}.budget-pct.ok{color:#10b981}.budget-pct.warn{color:#f59e0b}.budget-pct.over{color:var(--danger)}.budget-period-filter{display:flex;gap:4px}.bhealth-section{margin-bottom:24px}.bhealth-section-title{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;margin-bottom:10px}.bhealth-top{color:#10b981}.bhealth-worst{color:#ef4444}.bcard-grid{display:flex;flex-direction:column;gap:10px}.bcard{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px}.bcard-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.bcard-title-row{display:flex;align-items:baseline;gap:8px;min-width:0}.bcard-name{font-weight:700;font-size:14px}.bcard-client{font-size:12px;color:var(--text-muted)}.bcard-caret{color:var(--text-muted);font-size:12px}.bcard-type-badge{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;padding:2px 7px;border-radius:20px;flex-shrink:0}.bcard-type-badge.bcard-type-fixed{background:#fef3c7;color:#92400e}.bcard-type-badge.bcard-type-hourly{background:#ede9fe;color:#5b21b6}.bcard-metrics{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:10px}.bcard-metrics-sm{margin-top:8px}.bcard-metric-label{display:block;font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin-bottom:2px}.bcard-metric-value{font-size:15px;font-weight:700;color:var(--text)}.bcard-metrics-sm .bcard-metric-value{font-size:13px}.bcard-metric-pct{font-size:11px;font-weight:500;opacity:.7}.bcard-metric-ok .bcard-metric-value{color:#059669}.bcard-metric-warn .bcard-metric-value{color:#d97706}.bcard-metric-over .bcard-metric-value{color:var(--danger)}.bbar-wrap{height:8px;border-radius:4px;background:var(--bg);overflow:hidden;display:flex}.bbar-fill{height:100%;border-radius:4px;transition:width .3s}.bbar-fill.bbar-ok{background:#10b981}.bbar-fill.bbar-warn{background:#f59e0b}.bbar-fill.bbar-over{background:var(--danger)}.bbar-wages{height:100%;transition:width .3s}.bbar-wages.bbar-ok{background:#d1fae5}.bbar-wages.bbar-warn{background:#fde68a}.bbar-wages.bbar-over{background:#fecaca}.bbar-margin{height:100%;background:#10b981;transition:width .3s}.bcard-subs{margin-top:12px;padding-top:12px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:12px}.bcard-sub-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.bcard-sub-name{font-size:12px;font-weight:600;color:var(--text-muted)}.confirm-dialog{width:340px}.confirm-body{padding:16px 14px;font-size:13px;color:var(--text-muted)}.confirm-actions{display:flex;justify-content:flex-end;gap:8px;padding:12px 14px;border-top:1px solid var(--border-light)}.toast{position:fixed;bottom:20px;left:50%;transform:translate(-50%);background:var(--text);color:#fff;border-radius:6px;padding:8px 16px;font-size:13px;z-index:999;box-shadow:0 4px 16px #0003;white-space:nowrap;animation:toast-in .15s ease}@keyframes toast-in{0%{opacity:0;transform:translate(-50%) translateY(8px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.project-filter-tabs{display:flex;align-items:center;gap:2px;padding:8px 16px;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0;overflow-x:auto}.project-filter-tab{padding:5px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:transparent;color:var(--text-muted);font-size:12px;font-weight:500;cursor:pointer;font-family:inherit;white-space:nowrap;transition:all .1s}.project-filter-tab:hover{background:var(--bg);color:var(--text)}.project-filter-tab.active{background:var(--primary);border-color:var(--primary);color:#fff}.project-filter-tab-add{padding:5px 8px;color:var(--text-muted);border-style:dashed}.project-tab-new-form{display:flex;align-items:center;gap:6px}.project-tab-new-input{font:inherit;font-size:12px;padding:4px 8px;border:1px solid var(--border);border-radius:var(--radius-sm);width:140px}.projects-section{margin-top:16px;padding-top:16px;border-top:1px solid var(--border-light)}.projects-section-title{font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:8px;display:flex;align-items:center;gap:5px}.projects-section-list{display:flex;flex-direction:column;gap:1px;background:var(--border-light);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;margin-bottom:8px}.project-list-item{display:flex;align-items:center;gap:8px;padding:8px 12px;background:var(--surface)}.project-list-item-reorder{display:flex;flex-direction:column;gap:0;flex-shrink:0}.reorder-btn{display:flex;align-items:center;justify-content:center;width:22px;height:14px;border:none;background:none;color:var(--text-muted);cursor:pointer;padding:0;font-size:12px;border-radius:2px}.reorder-btn:hover:not(:disabled){background:var(--border-light);color:var(--text)}.reorder-btn:disabled{opacity:.2;cursor:default}.project-list-item-name{font-size:13px;font-weight:500;flex:1;min-width:0}.project-list-item-actions{display:flex;gap:4px;flex-shrink:0;margin-left:auto}.new-project-form{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px;margin-top:6px}.budget-card-parent{border-left:3px solid var(--primary)}.budget-expand-caret{font-size:10px;margin-right:5px;color:var(--text-muted)}.budget-sub-card{margin-left:20px;border-top:none;border-top-left-radius:0;border-top-right-radius:0;border-color:var(--border-light);background:var(--bg)}.budget-sub-card+.budget-sub-card{margin-top:2px}.budget-sub-name{display:flex;align-items:center;gap:6px}.budget-sub-indent{color:var(--text-light);font-size:13px}.avatar-stack{display:flex;align-items:center}.avatar-stack-item{width:24px;height:24px;border-radius:50%;border:2px solid var(--surface);display:flex;align-items:center;justify-content:center;font-size:8px;font-weight:700;color:#fff;flex-shrink:0;margin-left:-6px;object-fit:cover}.avatar-stack-item:first-child{margin-left:0}.avatar-stack-img{object-fit:cover}.avatar-stack-more{background:var(--border);color:var(--text-muted);font-size:9px;font-weight:600}.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted)}.empty-state i{font-size:32px;display:block;margin-bottom:12px;opacity:.4}.empty-state p{font-size:14px}.import-view{max-width:960px;margin:0 auto;padding:24px 20px}.import-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;gap:16px}.import-header h2{font-size:18px;font-weight:700;margin:0}.import-month-nav{display:flex;align-items:center;gap:8px}.import-month-label{font-size:14px;font-weight:600;min-width:130px;text-align:center}.import-banner{display:flex;align-items:center;gap:8px;padding:10px 14px;border-radius:var(--radius);font-size:13px;margin-bottom:16px}.import-banner-warning{background:#fef3c7;color:#92400e}.import-table-wrap{overflow-x:auto}.import-table{width:100%;border-collapse:collapse;font-size:13px}.import-table th{padding:8px 12px;text-align:left;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--text-muted);border-bottom:2px solid var(--border);white-space:nowrap}.import-table td{padding:6px 12px;border-bottom:1px solid var(--border-light);vertical-align:middle}.import-check-col{width:32px;text-align:center!important}.import-day-group{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:12px;overflow:hidden}.import-day-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;background:var(--bg);border-bottom:1px solid var(--border);gap:12px}.import-day-header-left{display:flex;align-items:center;gap:8px;font-size:13px}.import-day-header-right{display:flex;align-items:center;gap:8px}.import-day-group .import-table{margin:0}.import-day-group .import-table th{border-top:none}.import-row:hover td{background:#4f6ef708}.import-row-duplicate td{opacity:.4;text-decoration:line-through}.import-row-unmatched td{background:#fffbeb}.import-date{white-space:nowrap;font-variant-numeric:tabular-nums}.import-task{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.import-project-select{font-size:12px;padding:3px 6px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);max-width:180px}.import-warning-badge{color:#f59e0b;margin-left:4px;font-size:14px;vertical-align:middle}.spinner-small{width:14px;height:14px;border-width:2px;display:inline-block;vertical-align:middle;margin-right:6px}.btn-small{padding:4px 8px;font-size:12px}.sow-progress-bar{padding:8px 16px;background:var(--surface);border-bottom:1px solid var(--border);flex-shrink:0}.sow-progress-info{display:flex;align-items:center;gap:8px;margin-bottom:4px;font-size:12px}.sow-progress-label{font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:.04em;font-size:10px}.sow-progress-pct{font-weight:700;font-size:13px}.sow-progress-ok{color:#10b981}.sow-progress-warn{color:#f59e0b}.sow-progress-over{color:var(--danger)}.sow-progress-detail{color:var(--text-muted);font-size:11px}.bcard-sow-row{margin-top:8px;padding-top:8px;border-top:1px dashed var(--border-light)}.bcard-sow-label{font-size:11px;font-weight:600;color:var(--text-muted)}.completion-done{color:#10b981;font-weight:600}.rdp-root{--rdp-accent-color: blue;--rdp-accent-background-color: #f0f0ff;--rdp-day-height: 44px;--rdp-day-width: 44px;--rdp-day_button-border-radius: 100%;--rdp-day_button-border: 2px solid transparent;--rdp-day_button-height: 42px;--rdp-day_button-width: 42px;--rdp-selected-border: 2px solid var(--rdp-accent-color);--rdp-disabled-opacity: .5;--rdp-outside-opacity: .75;--rdp-today-color: var(--rdp-accent-color);--rdp-dropdown-gap: .5rem;--rdp-months-gap: 2rem;--rdp-nav_button-disabled-opacity: .5;--rdp-nav_button-height: 2.25rem;--rdp-nav_button-width: 2.25rem;--rdp-nav-height: 2.75rem;--rdp-range_middle-background-color: var(--rdp-accent-background-color);--rdp-range_middle-color: inherit;--rdp-range_start-color: white;--rdp-range_start-background: linear-gradient( var(--rdp-gradient-direction), transparent 50%, var(--rdp-range_middle-background-color) 50% );--rdp-range_start-date-background-color: var(--rdp-accent-color);--rdp-range_end-background: linear-gradient( var(--rdp-gradient-direction), var(--rdp-range_middle-background-color) 50%, transparent 50% );--rdp-range_end-color: white;--rdp-range_end-date-background-color: var(--rdp-accent-color);--rdp-week_number-border-radius: 100%;--rdp-week_number-border: 2px solid transparent;--rdp-week_number-height: var(--rdp-day-height);--rdp-week_number-opacity: .75;--rdp-week_number-width: var(--rdp-day-width);--rdp-weeknumber-text-align: center;--rdp-weekday-opacity: .75;--rdp-weekday-padding: .5rem 0rem;--rdp-weekday-text-align: center;--rdp-gradient-direction: 90deg;--rdp-animation_duration: .3s;--rdp-animation_timing: cubic-bezier(.4, 0, .2, 1)}.rdp-root[dir=rtl]{--rdp-gradient-direction: -90deg}.rdp-root[data-broadcast-calendar=true]{--rdp-outside-opacity: unset}.rdp-root{position:relative;box-sizing:border-box}.rdp-root *{box-sizing:border-box}.rdp-day{width:var(--rdp-day-width);height:var(--rdp-day-height);text-align:center}.rdp-day_button{background:none;padding:0;margin:0;cursor:pointer;font:inherit;color:inherit;justify-content:center;align-items:center;display:flex;width:var(--rdp-day_button-width);height:var(--rdp-day_button-height);border:var(--rdp-day_button-border);border-radius:var(--rdp-day_button-border-radius)}.rdp-day_button:disabled{cursor:revert}.rdp-caption_label{z-index:1;position:relative;display:inline-flex;align-items:center;white-space:nowrap;border:0}.rdp-dropdown:focus-visible~.rdp-caption_label{outline:5px auto Highlight;outline:5px auto -webkit-focus-ring-color}.rdp-button_next,.rdp-button_previous{border:none;background:none;padding:0;margin:0;cursor:pointer;font:inherit;color:inherit;-moz-appearance:none;-webkit-appearance:none;display:inline-flex;align-items:center;justify-content:center;position:relative;appearance:none;width:var(--rdp-nav_button-width);height:var(--rdp-nav_button-height)}.rdp-button_next:disabled,.rdp-button_next[aria-disabled=true],.rdp-button_previous:disabled,.rdp-button_previous[aria-disabled=true]{cursor:revert;opacity:var(--rdp-nav_button-disabled-opacity)}.rdp-chevron{display:inline-block;fill:var(--rdp-accent-color)}.rdp-root[dir=rtl] .rdp-nav .rdp-chevron{transform:rotate(180deg);transform-origin:50%}.rdp-dropdowns{position:relative;display:inline-flex;align-items:center;gap:var(--rdp-dropdown-gap)}.rdp-dropdown{z-index:2;opacity:0;appearance:none;position:absolute;inset-block-start:0;inset-block-end:0;inset-inline-start:0;width:100%;margin:0;padding:0;cursor:inherit;border:none;line-height:inherit}.rdp-dropdown_root{position:relative;display:inline-flex;align-items:center}.rdp-dropdown_root[data-disabled=true] .rdp-chevron{opacity:var(--rdp-disabled-opacity)}.rdp-month_caption{display:flex;align-content:center;height:var(--rdp-nav-height);font-weight:700;font-size:large}.rdp-root[data-nav-layout=around] .rdp-month,.rdp-root[data-nav-layout=after] .rdp-month{position:relative}.rdp-root[data-nav-layout=around] .rdp-month_caption{justify-content:center;margin-inline-start:var(--rdp-nav_button-width);margin-inline-end:var(--rdp-nav_button-width);position:relative}.rdp-root[data-nav-layout=around] .rdp-button_previous{position:absolute;inset-inline-start:0;top:0;height:var(--rdp-nav-height);display:inline-flex}.rdp-root[data-nav-layout=around] .rdp-button_next{position:absolute;inset-inline-end:0;top:0;height:var(--rdp-nav-height);display:inline-flex;justify-content:center}.rdp-months{position:relative;display:flex;flex-wrap:wrap;gap:var(--rdp-months-gap);max-width:fit-content}.rdp-month_grid{border-collapse:collapse}.rdp-nav{position:absolute;inset-block-start:0;inset-inline-end:0;display:flex;align-items:center;height:var(--rdp-nav-height)}.rdp-weekday{opacity:var(--rdp-weekday-opacity);padding:var(--rdp-weekday-padding);font-weight:500;font-size:smaller;text-align:var(--rdp-weekday-text-align);text-transform:var(--rdp-weekday-text-transform)}.rdp-week_number{opacity:var(--rdp-week_number-opacity);font-weight:400;font-size:small;height:var(--rdp-week_number-height);width:var(--rdp-week_number-width);border:var(--rdp-week_number-border);border-radius:var(--rdp-week_number-border-radius);text-align:var(--rdp-weeknumber-text-align)}.rdp-today:not(.rdp-outside){color:var(--rdp-today-color)}.rdp-selected{font-weight:700;font-size:large}.rdp-selected .rdp-day_button{border:var(--rdp-selected-border)}.rdp-outside{opacity:var(--rdp-outside-opacity)}.rdp-disabled:not(.rdp-selected){opacity:var(--rdp-disabled-opacity)}.rdp-hidden{visibility:hidden;color:var(--rdp-range_start-color)}.rdp-range_start{background:var(--rdp-range_start-background)}.rdp-range_start .rdp-day_button{background-color:var(--rdp-range_start-date-background-color);color:var(--rdp-range_start-color)}.rdp-range_middle{background-color:var(--rdp-range_middle-background-color)}.rdp-range_middle .rdp-day_button{border:unset;border-radius:unset;color:var(--rdp-range_middle-color)}.rdp-range_end{background:var(--rdp-range_end-background);color:var(--rdp-range_end-color)}.rdp-range_end .rdp-day_button{color:var(--rdp-range_start-color);background-color:var(--rdp-range_end-date-background-color)}.rdp-range_start.rdp-range_end{background:revert}.rdp-focusable{cursor:pointer}@keyframes rdp-slide_in_left{0%{transform:translate(-100%)}to{transform:translate(0)}}@keyframes rdp-slide_in_right{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes rdp-slide_out_left{0%{transform:translate(0)}to{transform:translate(-100%)}}@keyframes rdp-slide_out_right{0%{transform:translate(0)}to{transform:translate(100%)}}.rdp-weeks_before_enter{animation:rdp-slide_in_left var(--rdp-animation_duration) var(--rdp-animation_timing) forwards}.rdp-weeks_before_exit{animation:rdp-slide_out_left var(--rdp-animation_duration) var(--rdp-animation_timing) forwards}.rdp-weeks_after_enter{animation:rdp-slide_in_right var(--rdp-animation_duration) var(--rdp-animation_timing) forwards}.rdp-weeks_after_exit{animation:rdp-slide_out_right var(--rdp-animation_duration) var(--rdp-animation_timing) forwards}.rdp-root[dir=rtl] .rdp-weeks_after_enter{animation:rdp-slide_in_left var(--rdp-animation_duration) var(--rdp-animation_timing) forwards}.rdp-root[dir=rtl] .rdp-weeks_before_exit{animation:rdp-slide_out_right var(--rdp-animation_duration) var(--rdp-animation_timing) forwards}.rdp-root[dir=rtl] .rdp-weeks_before_enter{animation:rdp-slide_in_right var(--rdp-animation_duration) var(--rdp-animation_timing) forwards}.rdp-root[dir=rtl] .rdp-weeks_after_exit{animation:rdp-slide_out_left var(--rdp-animation_duration) var(--rdp-animation_timing) forwards}@keyframes rdp-fade_in{0%{opacity:0}to{opacity:1}}@keyframes rdp-fade_out{0%{opacity:1}to{opacity:0}}.rdp-caption_after_enter{animation:rdp-fade_in var(--rdp-animation_duration) var(--rdp-animation_timing) forwards}.rdp-caption_after_exit{animation:rdp-fade_out var(--rdp-animation_duration) var(--rdp-animation_timing) forwards}.rdp-caption_before_enter{animation:rdp-fade_in var(--rdp-animation_duration) var(--rdp-animation_timing) forwards}.rdp-caption_before_exit{animation:rdp-fade_out var(--rdp-animation_duration) var(--rdp-animation_timing) forwards}
