.main-menu-page{min-height:calc(100vh - 32px);font-family:var(--ts-font);background:#fff;border:1px solid #e5e7eb;border-radius:12px;grid-template-columns:240px minmax(0,1fr);display:grid;overflow:hidden}.main-menu-sidebar{background:#f8fafc;border-right:1px solid #e5e7eb;flex-direction:column;gap:18px;padding:16px 10px;display:flex}.main-menu-brand{align-items:center;gap:10px;padding:4px 8px;display:flex}.main-menu-brand-icon{color:#fff;background:linear-gradient(#6366f1 0%,#4f46e5 100%);border-radius:8px;justify-content:center;align-items:center;width:28px;height:28px;font-size:15px;display:inline-flex}.main-menu-brand-text{color:#0f172a;font-size:16px;font-weight:700}.main-menu-nav{flex-direction:column;gap:4px;display:flex}.main-menu-nav-item{color:#0f172a;text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;padding:10px 12px;font-size:14px;font-weight:600}.main-menu-nav-item:hover:not(:disabled){background:#eef2ff;border-color:#e0e7ff}.main-menu-nav-item.is-active{color:#4338ca;background:#e0e7ff;border-color:#c7d2fe}.main-menu-nav-item:disabled{opacity:1;color:#475569;cursor:default}.main-menu-content{flex-direction:column;gap:12px;min-height:0;padding:16px;display:flex}.main-menu-content-header{justify-content:space-between;align-items:center;gap:10px;display:flex}.main-menu-content-header h1{color:#0f172a;margin:0;font-size:28px;font-weight:700}.main-menu-create-btn{color:#334155;letter-spacing:.01em;cursor:pointer;background:linear-gradient(#fff 0%,#f8fafc 100%);border:1px solid #d1d5db;border-radius:999px;width:auto;min-width:96px;height:36px;padding:0 16px;font-size:13px;font-weight:600}.main-menu-create-btn:hover{background:linear-gradient(#f8faff 0%,#eef2ff 100%);border-color:#c7d2fe;box-shadow:0 2px 8px #4f46e51f}.main-menu-error{color:#991b1b;background:#fef2f2;border:1px solid #fecaca;border-radius:10px;padding:10px 12px;font-size:13px;font-weight:600}.main-menu-table-wrapper{background:#fff;border:1px solid #e5e7eb;border-radius:10px;max-height:calc(100vh - 170px);overflow:auto}.main-menu-table{border-collapse:collapse;table-layout:fixed;width:100%}.main-menu-table th,.main-menu-table td{color:#0f172a;text-align:left;vertical-align:middle;border-bottom:1px solid #eef2f7;padding:10px 12px;font-size:13px}.main-menu-table th{z-index:1;background:#f8f9fc;position:sticky;top:0}.main-menu-table th:first-child{width:33%}.main-menu-table th:nth-child(2){width:19%}.main-menu-table th:nth-child(3),.main-menu-table th:nth-child(4){width:24%}.main-menu-sort-btn{color:#64748b;letter-spacing:.06em;text-transform:uppercase;cursor:pointer;background:0 0;border:none;padding:0;font-size:11px;font-weight:700}.main-menu-status-pill{letter-spacing:.01em;border:1px dotted #0000;border-radius:999px;justify-content:center;align-items:center;min-width:104px;min-height:24px;padding:4px 12px;font-size:12px;font-weight:600;display:inline-flex}.main-menu-status-pill.tone-draft{color:#475569;background:#f8fafc;border-color:#64748b}.main-menu-status-pill.tone-submitted{color:#b45309;background:#fffbeb;border-color:#d97706}.main-menu-status-pill.tone-approved{color:#15803d;background:#f0fdf4;border-color:#16a34a}.main-menu-status-pill.tone-partially-approved{color:#1d4ed8;background:#eff6ff;border-color:#3b82f6}.main-menu-status-pill.tone-rejected{color:#be123c;background:#fff1f2;border-color:#e11d48}.main-menu-status-cell{align-items:center;gap:6px;display:inline-flex}.main-menu-status-warning{color:#b91c1c;cursor:help;background:#fff1f2;border:1px solid #fecaca;border-radius:999px;justify-content:center;align-items:center;width:20px;height:20px;font-size:12px;line-height:1;display:inline-flex}.main-menu-row-action{color:#1e3a8a;letter-spacing:.01em;cursor:pointer;background:linear-gradient(#eff6ff 0%,#dbeafe 100%);border:1px solid #93c5fd;border-radius:999px;width:auto;min-width:84px;height:30px;padding:0 12px;font-size:12px;font-weight:600}.main-menu-row-action:hover{background:linear-gradient(#e0edff 0%,#cfe3ff 100%);border-color:#60a5fa}.main-menu-row-action:disabled{opacity:.6;cursor:default}.main-menu-actions-cell{align-items:center;gap:8px;display:inline-flex}.main-menu-row-action--recall{color:#9d174d;background:linear-gradient(#fdf2f8 0%,#fce7f3 100%);border-color:#f9a8d4}.main-menu-row-action--recall:hover:not(:disabled){background:linear-gradient(#fce7f3 0%,#fbcfe8 100%);border-color:#f472b6}.main-menu-empty{text-align:center;color:#64748b;padding:20px 0;font-weight:600}.main-menu-create-backdrop{z-index:1200;background:#0f172a73;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.main-menu-create-modal{background:#fff;border:1px solid #e2e8f0;border-radius:16px;width:min(640px,100vw - 48px);padding:24px;box-shadow:0 22px 60px #0f172a47}.main-menu-create-title{color:#0f172a;margin:0 0 8px;font-size:26px;font-weight:700}.main-menu-create-subtitle{color:#475569;margin:0 0 18px;font-size:15px}.main-menu-create-input{color:#0f172a;background:#fff;border:1px solid #cbd5e1;border-radius:12px;width:100%;height:56px;padding:0 16px;font-size:18px;font-weight:600}.main-menu-create-input:focus{border-color:#6366f1;outline:none;box-shadow:0 0 0 3px #6366f129}.main-menu-create-actions{justify-content:flex-end;gap:10px;margin-top:18px;display:flex}.main-menu-create-btn-secondary,.main-menu-create-btn-primary{letter-spacing:.01em;cursor:pointer;color:#0f172a;background:#fff;border:1px solid #d1d5db;border-radius:10px;height:40px;padding:0 16px;font-size:13px;font-weight:600}.main-menu-create-btn-primary{color:#1e3a8a;background:linear-gradient(#eff6ff 0%,#dbeafe 100%);border-color:#93c5fd}@media (width<=980px){.main-menu-page{grid-template-columns:1fr}.main-menu-sidebar{border-bottom:1px solid #e5e7eb;border-right:none}.main-menu-nav{flex-flow:wrap}}.approvals-page{min-height:calc(100vh - 32px);font-family:var(--ts-font);background:#fff;border:1px solid #e5e7eb;border-radius:12px;grid-template-columns:240px minmax(0,1fr);display:grid;overflow:hidden}.approvals-page .main-menu-sidebar{background:#f8fafc;border-right:1px solid #e5e7eb;flex-direction:column;gap:18px;padding:16px 10px;display:flex}.approvals-page .main-menu-brand{align-items:center;gap:10px;padding:4px 8px;display:flex}.approvals-page .main-menu-brand-icon{color:#fff;background:linear-gradient(#6366f1 0%,#4f46e5 100%);border-radius:8px;justify-content:center;align-items:center;width:28px;height:28px;font-size:15px;display:inline-flex}.approvals-page .main-menu-brand-text{color:#0f172a;font-size:16px;font-weight:700}.approvals-page .main-menu-nav{flex-direction:column;gap:4px;display:flex}.approvals-page .main-menu-nav-item{color:#0f172a;text-align:left;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:8px;padding:10px 12px;font-size:14px;font-weight:600}.approvals-page .main-menu-nav-item:hover:not(:disabled){background:#eef2ff;border-color:#e0e7ff}.approvals-page .main-menu-nav-item.is-active{color:#4338ca;background:#e0e7ff;border-color:#c7d2fe}.approvals-page .main-menu-nav-item:disabled{opacity:1;color:#475569;cursor:default}.approvals-content{flex-direction:column;gap:12px;min-height:0;padding:16px;display:flex}.approvals-mode-content{flex-direction:column;gap:12px;min-height:0;display:flex}.approvals-mode-content.is-hidden{display:none}.approvals-mode-header{grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;display:grid}.approvals-mode-header h1{color:#0f172a;justify-self:start;margin:0;font-size:28px;font-weight:700}.approvals-mode-header-spacer{min-height:1px}.approvals-mode-pill{background:linear-gradient(#f8fafc 0%,#e2e8f0 100%);border:1px solid #cbd5e1;border-radius:999px;grid-template-columns:1fr 1fr;justify-self:center;gap:0;width:min(740px,100%);height:38px;padding:0;display:grid;position:relative;overflow:hidden}.approvals-mode-pill:before{content:"";pointer-events:none;background:#cbd5e1;width:1px;position:absolute;top:6px;bottom:6px;left:50%;transform:translate(-.5px)}.approvals-mode-pill-option{color:#111827;cursor:pointer;background:linear-gradient(#eef2f7 0%,#e2e8f0 100%);border:0;border-radius:0;font-size:14px;font-weight:700;transition:background .12s,color .12s,box-shadow .12s}.approvals-mode-pill-option:hover:not(.is-active){color:#0f172a;background:linear-gradient(#e8edf4 0%,#dbe3ec 100%)}.approvals-mode-pill-option.is-active{color:#2563eb;background:linear-gradient(#fff 0%,#f8fbff 100%);box-shadow:inset 0 0 0 1px #bfdbfed9}.approvals-mode-pill-option.is-active:hover{color:#1d4ed8;background:linear-gradient(#fff 0%,#eef6ff 100%)}.approvals-mode-controls{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;display:flex}.approvals-toolbar-actions{flex-wrap:wrap;align-items:center;gap:10px;display:inline-flex}.approvals-toolbar-actions--left{justify-self:start}.approvals-toolbar-actions--right{justify-self:end}.approvals-ghost-btn{color:#334155;letter-spacing:.01em;cursor:pointer;background:linear-gradient(#fff 0%,#f8fafc 100%);border:1px solid #d1d5db;border-radius:999px;min-width:96px;height:36px;font-size:13px;font-weight:600;transition:background .12s,border-color .12s,box-shadow .12s,transform 60ms}.approvals-ghost-btn:hover:not(:disabled){background:linear-gradient(#f8faff 0%,#eef2ff 100%);border-color:#c7d2fe;box-shadow:0 2px 8px #4f46e51f}.approvals-ghost-btn:active:not(:disabled){background:linear-gradient(#eaeffe 0%,#e0e7ff 100%);transform:translateY(1px)}.approvals-ghost-btn:disabled{opacity:1;color:#9ca3af;box-shadow:none;cursor:not-allowed;background:#f3f4f6;border-color:#d1d5db}.approvals-count{font-size:14px;font-weight:700}.approvals-count--pending{color:#dc2626}.approvals-count--approved{color:#1f2937}.approvals-approve-btn{color:#334155;letter-spacing:.01em;cursor:pointer;background:linear-gradient(#fff 0%,#f8fafc 100%);border:1px solid #d1d5db;border-radius:999px;min-width:108px;height:36px;font-size:13px;font-weight:600;transition:background .12s,border-color .12s,box-shadow .12s,transform 60ms}.approvals-approve-btn.is-active{color:#111827;background:linear-gradient(#dcfce7 0%,#bbf7d0 100%);border-color:#86efac}.approvals-approve-btn.is-active:hover:not(:disabled){background:linear-gradient(#cffce1 0%,#a7f3c0 100%);border-color:#4ade80;box-shadow:0 3px 10px #4ade8040}.approvals-approve-btn.is-active:active:not(:disabled){background:linear-gradient(#bbf7d0 0%,#86efac 100%);transform:translateY(1px)}.approvals-reject-btn.is-active{color:#9f1239;background:linear-gradient(#fff1f2 0%,#ffe4e6 100%);border-color:#fecaca}.approvals-reject-btn.is-active:hover:not(:disabled){background:linear-gradient(#ffe4e6 0%,#fecdd3 100%);border-color:#fda4af;box-shadow:0 3px 10px #f43f5e33}.approvals-reject-btn.is-active:active:not(:disabled){background:linear-gradient(#fecdd3 0%,#fda4af 100%);transform:translateY(1px)}.approvals-approve-btn:disabled{opacity:1;color:#9ca3af;box-shadow:none;cursor:not-allowed;background:#f3f4f6;border-color:#d1d5db}.approvals-error{color:#991b1b;background:#fef2f2;border:1px solid #fecaca;border-radius:10px;padding:10px 12px;font-size:13px;font-weight:600}.approvals-empty-panel{color:#475569;background:#f8fafc;border:1px solid #e2e8f0;border-radius:12px;justify-content:center;align-items:center;min-height:280px;font-size:14px;font-weight:600;display:flex}.approvals-timesheets-shell{--approvals-timesheets-select-col:44px;background:#fff;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden}.approvals-timesheets-table{width:100%}.approvals-timesheets-row{grid-template-columns:var(--approvals-timesheets-select-col) minmax(0, 25fr) minmax(0, 20fr) minmax(0, 15fr) minmax(0, 10fr) minmax(0, 15fr) minmax(0, 15fr);border-bottom:1px solid #eef2f7;align-items:center;min-height:44px;transition:background-color .12s;display:grid}.approvals-timesheets-row:hover:not(.approvals-timesheets-row--header){background:#f8fbff}.approvals-timesheets-row:last-child{border-bottom:none}.approvals-timesheets-row--header{background:#f8fafc;min-height:42px}.approvals-timesheets-cell{color:#0f172a;white-space:normal;overflow-wrap:anywhere;word-break:break-word;border-right:1px solid #edf1f7;align-items:center;min-width:0;min-height:44px;padding:8px 10px;font-size:13px;line-height:1.35;display:flex}.approvals-timesheets-row--header .approvals-timesheets-cell{color:#475569;text-transform:uppercase;letter-spacing:.02em;min-height:42px;padding-top:6px;padding-bottom:6px;font-size:12px;font-weight:700}.approvals-timesheets-cell:last-child{border-right:none}.approvals-timesheets-cell--select{justify-content:center;padding:0}.approvals-timesheets-cell--period,.approvals-timesheets-cell--resource{text-align:left;justify-content:flex-start}.approvals-timesheets-cell--submitted,.approvals-timesheets-cell--hours,.approvals-timesheets-cell--status{text-align:center;font-variant-numeric:tabular-nums;justify-content:center}.approvals-timesheets-status-pill{letter-spacing:.01em;border:1px dotted #0000;border-radius:999px;justify-content:center;align-items:center;min-width:104px;min-height:24px;padding:4px 12px;font-size:12px;font-weight:600;display:inline-flex}.approvals-timesheets-status-pill.tone-draft{color:#475569;background:#f8fafc;border-color:#64748b}.approvals-timesheets-status-pill.tone-submitted{color:#b45309;background:#fffbeb;border-color:#d97706}.approvals-timesheets-status-pill.tone-approved{color:#15803d;background:#f0fdf4;border-color:#16a34a}.approvals-timesheets-status-pill.tone-partially-approved{color:#1d4ed8;background:#eff6ff;border-color:#3b82f6}.approvals-timesheets-status-pill.tone-rejected{color:#be123c;background:#fff1f2;border-color:#e11d48}.approvals-timesheets-cell--actions{text-align:center;flex-wrap:wrap;justify-content:center;align-items:center;gap:10px}.approvals-timesheets-open-btn{min-width:72px;height:30px}.approvals-timesheets-comments-btn{width:30px;height:30px}.approvals-grid-shell{background:#fff;border:1px solid #e5e7eb;border-radius:12px;min-height:460px;max-height:calc(100vh - 220px);position:relative;overflow:hidden}.approvals-grid-scroll{width:100%;height:100%;position:relative;overflow:auto}.approvals-grid-table{min-height:100%}.approvals-row{box-sizing:border-box;border-bottom:1px solid #eef2f7;height:34px;display:flex}.approvals-row--header{z-index:20;background:#f8f9fc;border-bottom:1px solid #dbe3ef;height:68px;position:sticky;top:0}.approvals-row-right{flex:auto;min-width:0;display:flex}.approvals-cell{box-sizing:border-box;color:#0f172a;border-right:1px solid #edf1f7;flex:none;justify-content:center;align-items:center;font-size:12px;display:inline-flex}.approvals-cell--left{z-index:12;background:#fff;border-right:1px solid #dbe3ef;justify-content:flex-start;gap:8px;width:360px;padding:0 10px;position:sticky;left:0}.approvals-cell--header.approvals-cell--left{z-index:30;color:#475569;background:#f8f9fc;font-size:12px;font-weight:700}.approvals-cell--total{z-index:11;background:#fff;border-right:1px solid #dbe3ef;flex-direction:column;gap:0;width:76px;font-size:12px;font-weight:700;position:sticky;left:436px}.approvals-cell--remaining{z-index:11;background:#fff;border-right:1px solid #dbe3ef;flex-direction:column;gap:0;width:76px;font-size:12px;font-weight:700;position:sticky;left:360px}.approvals-cell--remaining.is-user-intent{color:#dc2626}.approvals-cell--total small,.approvals-cell--remaining small,.approvals-cell--header small{color:#64748b;letter-spacing:.02em;font-size:10px;font-weight:700}.approvals-days-strip{flex:auto;align-items:stretch;min-width:0;display:inline-flex}.approvals-header-days{flex-direction:column;flex:auto;min-width:0;display:flex}.approvals-months-strip{border-bottom:1px solid #dbe3ef;align-items:stretch;min-width:0;height:22px;display:inline-flex}.approvals-month-band{color:#0f172a;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;text-overflow:ellipsis;border-right:1px solid #d6dbe5;justify-content:center;align-items:center;font-size:11px;font-weight:800;display:inline-flex;overflow:hidden}.approvals-month-band.tone-0{background:#fef9c3}.approvals-month-band.tone-1{background:#f5d0fe}.approvals-month-band.tone-2{background:#dbeafe}.approvals-month-band.tone-3{background:#fee2e2}.approvals-days-strip--header{height:calc(100% - 22px)}.approvals-cell--day{width:72px}.approvals-cell--header.approvals-cell--day{flex-direction:column;gap:0;font-size:12px;font-weight:700}.approvals-cell--day.is-weekend,.approvals-cell--header.approvals-cell--day.is-weekend{background:#f1f5f9}.approvals-value{color:#111827;font-size:13px;font-weight:600}.approvals-value.is-pending{color:#dc2626}.approvals-row--project .approvals-cell--total,.approvals-row--resource .approvals-cell--total,.approvals-row--project .approvals-cell--remaining,.approvals-row--resource .approvals-cell--remaining{color:#64748b;font-size:10px;font-weight:400}.approvals-row--project .approvals-value,.approvals-row--resource .approvals-value{color:#64748b;font-size:11px;font-weight:400}.approvals-row--project .approvals-value.is-pending,.approvals-row--resource .approvals-value.is-pending{color:#ef4444;font-weight:500}.approvals-toggle{color:#64748b;cursor:pointer;background:0 0;border:none;width:20px;height:20px;padding:0;font-size:14px}.approvals-node{white-space:nowrap;text-overflow:ellipsis;align-items:center;min-width:0;display:inline-flex;overflow:hidden}.approvals-node--project{color:#0f172a;font-size:13px;font-weight:700}.approvals-node--resource{color:#334155;font-size:12px;font-weight:700}.approvals-node--task{color:#334155;font-size:12px;font-weight:500}.approvals-checkbox{accent-color:#4f46e5;width:14px;height:14px}.approvals-badge{color:#dc2626;background:#fee2e2;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;min-width:26px;height:18px;margin-left:auto;padding:0 8px;font-size:11px;font-weight:700;display:inline-flex}.approvals-badge--jump{cursor:pointer}.approvals-badge--jump:hover:not(:disabled){background:#fecaca;border-color:#fca5a5}.approvals-badge--jump:disabled{cursor:default;opacity:.85}.approvals-task-actions{align-items:center;gap:2px;margin-left:auto;display:inline-flex}.approvals-task-actions .approvals-badge{margin-left:0}.approvals-comments-btn{color:#9ca3af;cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;width:26px;height:26px;transition:background .12s,color .12s;display:inline-flex}.approvals-comments-btn:hover{background:#2563eb1a}.approvals-comments-btn.has-comments{color:#2563eb}.approvals-comments-icon{box-sizing:border-box;border:2px solid;border-radius:4px;width:16px;height:12px;display:block;position:relative}.approvals-comments-icon:after{content:"";border-bottom:2px solid;border-left:2px solid;width:5px;height:5px;position:absolute;bottom:-5px;left:2px;transform:skew(-18deg)rotate(-30deg)}.approvals-row--project .approvals-cell--left{background:#fdfdff}.approvals-row--resource .approvals-cell--left{background:#fcfdff}.approvals-row--task .approvals-cell--left{background:#fff}.approvals-row--header .approvals-cell--total,.approvals-row--header .approvals-cell--remaining{z-index:31;background:#f8f9fc}.approvals-row .depth-1{padding-left:28px}.approvals-row .depth-2{padding-left:52px}.approvals-extend-bar{z-index:45;color:#334155;cursor:pointer;background:linear-gradient(#94a3b824 0%,#94a3b842 100%);border:none;justify-content:center;align-items:center;width:14px;padding:0;display:inline-flex;position:absolute;top:68px;bottom:14px;box-shadow:0 0 0 1px #94a3b829,0 6px 18px #0f172a14}.approvals-extend-bar--left{border-right:1px solid #94a3b859;left:513px}.approvals-extend-bar--right{border-left:1px solid #94a3b859;right:0}.approvals-extend-bar:hover{background:linear-gradient(#94a3b833 0%,#94a3b857 100%)}.approvals-extend-bar-chevron{font-size:15px;line-height:1;transform:translateY(-1px)}.approvals-comments-backdrop{z-index:1100;background:#0f172a73;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.approvals-comments-modal{background:#fff;border:1px solid #e5e7eb;border-radius:12px;flex-direction:column;width:min(780px,100vw - 40px);max-height:calc(100vh - 60px);display:flex;box-shadow:0 18px 48px #0f172a47}.approvals-comments-modal-header{border-bottom:1px solid #eef2f7;justify-content:space-between;align-items:center;padding:14px 16px;display:flex}.approvals-comments-modal-header h2{color:#0f172a;margin:0;font-size:17px;font-weight:600}.approvals-comments-close{color:#4338ca;cursor:pointer;background:#eef2ff;border:none;border-radius:999px;width:30px;height:30px;font-size:18px;line-height:1}.approvals-comments-close:hover{background:#e0e7ff}.approvals-comments-modal-body{flex-direction:column;gap:10px;padding:14px 16px;display:flex;overflow:auto}.approvals-comments-label{color:#334155;font-size:12px;font-weight:700}.approvals-comments-select{color:#0f172a;background:#fff;border:1px solid #cbd5e1;border-radius:8px;height:34px;padding:0 10px;font-size:13px}.approvals-comments-history{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;min-height:120px;max-height:280px;padding:10px;overflow:auto}.approvals-comments-history-content{color:#0f172a;font-size:13px;line-height:1.5}.approvals-comments-empty{color:#64748b;font-size:13px}.approvals-comments-textarea{resize:vertical;width:100%;min-height:90px;font:inherit;color:#0f172a;background:#fff;border:1px solid #cbd5e1;border-radius:8px;padding:8px 10px}.approvals-comments-textarea:focus,.approvals-comments-select:focus{border-color:#6366f1;outline:none;box-shadow:0 0 0 2px #6366f126}.approvals-comments-modal-actions{border-top:1px solid #eef2f7;justify-content:flex-end;gap:10px;padding:12px 16px 16px;display:flex}.approvals-pill-action-btn{color:#334155;min-width:84px;height:36px;font:inherit;letter-spacing:.01em;cursor:pointer;background:linear-gradient(#fff 0%,#f8fafc 100%);border:1px solid #d1d5db;border-radius:999px;font-size:13px;font-weight:600;transition:background .12s,border-color .12s,box-shadow .12s,transform 60ms}.approvals-pill-action-btn:hover:not(:disabled){background:linear-gradient(#f8faff 0%,#eef2ff 100%);border-color:#c7d2fe;box-shadow:0 2px 8px #4f46e51f}.approvals-pill-action-btn:active:not(:disabled){background:linear-gradient(#eaeffe 0%,#e0e7ff 100%);transform:translateY(1px)}.approvals-pill-action-btn--primary{color:#1e3a8a;background:linear-gradient(#eff6ff 0%,#dbeafe 100%);border-color:#93c5fd}.approvals-pill-action-btn--primary:hover:not(:disabled){background:linear-gradient(#e0edff 0%,#cfe3ff 100%);border-color:#60a5fa;box-shadow:0 4px 12px #60a5fa3d}.approvals-pill-action-btn--primary:active:not(:disabled){background:linear-gradient(#cfe3ff 0%,#bfdbfe 100%)}.approvals-pill-action-btn:disabled{opacity:.6;cursor:not-allowed}@media (width<=980px){.approvals-page{grid-template-columns:1fr}.approvals-page .main-menu-sidebar{border-bottom:1px solid #e5e7eb;border-right:none}.approvals-page .main-menu-nav{flex-flow:wrap}.approvals-mode-header{grid-template-columns:1fr;justify-items:stretch;gap:10px}.approvals-mode-header h1{justify-self:start}.approvals-mode-header-spacer{display:none}.approvals-mode-pill{justify-self:stretch;width:100%}.approvals-mode-controls{flex-direction:column;align-items:stretch}.approvals-toolbar-actions--right{justify-content:flex-start}.approvals-timesheets-shell{--approvals-timesheets-select-col:40px}.approvals-timesheets-cell{padding-left:8px;padding-right:8px}}:root{--ts-font:"Segoe UI", system-ui, -apple-system, sans-serif;--ts-font-size-base:13px;--ts-font-size-sm:11px;--ts-fw-regular:400;--ts-fw-semibold:600;--ts-color-surface:#fff;--ts-color-header-bg:#f8f9fc;--ts-color-sep:#e5e7eb;--ts-color-sep-light:#f0f1f4;--ts-color-weekend-bg:#f2f4fb;--ts-color-total-bg:#eef2ff;--ts-color-total-hover:#e4eaff;--ts-color-hover-bg:#f0f4ff;--ts-color-locked-bg:#f5f5f5;--ts-color-approved-bg:#edf9f1;--ts-color-approved-hover:#e3f4e9;--ts-color-edited-bg:#fff5cc;--ts-color-edited-hover:#ffefad;--ts-color-rejected-bg:#fdeeee;--ts-color-rejected-hover:#fbe0e0;--ts-color-pending-bg:#dbeafe;--ts-color-pending-hover:#bfdbfe;--ts-color-text:#111827;--ts-color-text-muted:#6b7280;--ts-color-text-disabled:#adb5bd;--ts-cell-w:58px;--ts-cell-h:44px;--ts-left-w:30%;--ts-right-w:15%;--ts-project-row-h:20px;--ts-remaining-w:80px;--ts-assignment-date-w:72px;--ts-comments-w:34px;--ts-action-btn-w:calc(12ch + 26px);--ts-shadow-card:0 1px 3px #00000014, 0 0 1px #0000000d;--ts-radius:8px}.grid-surface{font-family:var(--ts-font);font-size:var(--ts-font-size-base);color:var(--ts-color-text);flex-direction:column;gap:10px;display:flex}@media (width>=1000px){.grid-surface{--ts-left-w:40%;--ts-right-w:10%}}.week-layout .grid-header,.week-layout .grid-row,.week-layout .grid-footer{width:100%;min-width:0}.week-layout .pane-center{flex:50%;min-width:0}.week-layout .day-headers,.week-layout .day-cells{grid-template-columns:repeat(var(--ts-days-count), minmax(0, 1fr));width:100%;min-width:0;display:grid}.week-layout .day-header,.week-layout .day-cell{width:auto;min-width:0}.month-layout{--ts-month-left-w:300px;--ts-month-right-w:80px}@media (width>=1000px){.month-layout{--ts-month-left-w:450px}}.month-layout .pane-left{flex:0 0 var(--ts-month-left-w);width:var(--ts-month-left-w);min-width:var(--ts-month-left-w);max-width:var(--ts-month-left-w)}.month-layout .pane-right{flex:0 0 var(--ts-month-right-w);width:var(--ts-month-right-w);min-width:var(--ts-month-right-w);max-width:var(--ts-month-right-w)}.timesheet-grid{border-radius:var(--ts-radius);box-shadow:var(--ts-shadow-card);border:1px solid var(--ts-color-sep);background:var(--ts-color-surface);overflow:hidden}.grid-scroll{max-height:70vh;overflow:auto}.grid-header,.grid-row{min-width:max-content;display:flex}.grid-header{z-index:30;background:var(--ts-color-header-bg);position:sticky;top:0;box-shadow:inset 0 -1px #e5e7ebd9}.grid-row{border-bottom:1px solid #f0f1f48c;transition:background 80ms}.grid-row:last-child{border-bottom:none}.grid-row:hover{background:var(--ts-color-hover-bg)}.project-row,.grid-body .grid-row{border-bottom:none}.project-row:hover{background:0 0}.project-row:hover .pane-left{background:var(--ts-color-surface)}.project-row:hover .pane-right{background:var(--ts-color-total-bg)}.project-row:hover .weekend-cell{background:var(--ts-color-weekend-bg)}.pane{flex-direction:column;display:flex}.pane-left{flex:0 0 var(--ts-left-w);width:var(--ts-left-w);min-width:var(--ts-left-w);max-width:var(--ts-left-w);z-index:20;background:var(--ts-color-surface);position:sticky;left:0;overflow:hidden;box-shadow:inset -1px 0 #e5e7ebbf}.pane-center{flex:auto;min-width:max-content}.pane-right{flex:0 0 var(--ts-right-w);width:var(--ts-right-w);min-width:var(--ts-right-w);max-width:var(--ts-right-w);z-index:20;background:var(--ts-color-total-bg);position:sticky;right:0;box-shadow:inset 1px 0 #e5e7ebbf}.grid-header .pane-left,.grid-header .pane-right{background:var(--ts-color-header-bg);z-index:31}.grid-row:hover .pane-left{background:var(--ts-color-hover-bg)}.grid-row:hover .pane-right{background:var(--ts-color-total-hover)}.day-headers,.day-cells{min-width:max-content;display:flex}.header-cell{flex-direction:column;justify-content:center;align-items:center;height:52px;padding:6px 0;display:flex}.header-cell:last-child{border-right:none}.day-num{font-size:13px;font-weight:var(--ts-fw-semibold);color:var(--ts-color-text);letter-spacing:0;line-height:1.2}.day-name{font-size:var(--ts-font-size-sm);font-weight:var(--ts-fw-regular);color:var(--ts-color-text-muted);text-transform:capitalize;line-height:1.2}.day-header{width:var(--ts-cell-w);min-width:var(--ts-cell-w);box-shadow:inset -1px 0 0 var(--ts-color-sep)}.day-header--rule-violation{background:#fee2e2}.day-header--rule-violation .day-num,.day-header--rule-violation .day-name{color:#b91c1c}.pane-left .header-cell{width:100%;height:52px;font-size:var(--ts-font-size-sm);font-weight:var(--ts-fw-semibold);color:var(--ts-color-text-muted);text-transform:uppercase;letter-spacing:.4px;border-right:none;justify-content:center;align-items:center;padding:0 12px}.assignment-header-cell{grid-template-columns:minmax(0, 1fr) var(--ts-remaining-w) var(--ts-comments-w);text-transform:uppercase;justify-content:stretch;align-items:center;column-gap:0;width:100%;height:100%;padding:0 12px;display:grid}.assignment-header-cell--with-dates{grid-template-columns:minmax(0, 1fr) var(--ts-assignment-date-w) var(--ts-assignment-date-w) var(--ts-remaining-w) var(--ts-comments-w)}.assignment-header-label,.assignment-date-header-label,.remaining-header-label{height:100%;font-size:var(--ts-font-size-sm);font-weight:var(--ts-fw-semibold);color:var(--ts-color-text-muted);letter-spacing:.45px;align-items:center;display:flex}.assignment-header-label{text-align:left;justify-content:flex-start;min-width:0}.assignment-date-header-label,.remaining-header-label{text-align:center;justify-content:center}.pane-right .header-cell{border-right:none;justify-content:center;align-items:center;width:100%;height:52px;padding:0}.total-header .day-num{color:#4f46e5}.total-header .day-name{color:#818cf8}.body-cell{height:var(--ts-cell-h);font-variant-numeric:tabular-nums;justify-content:center;align-items:center;display:flex}.body-cell:last-child{border-right:none}.day-cell{width:var(--ts-cell-w);min-width:var(--ts-cell-w);box-shadow:inset -1px 0 0 var(--ts-color-sep-light)}.project-day-cell{height:var(--ts-project-row-h)}.pane-left .body-cell{width:100%;min-width:0;max-width:100%;font-size:var(--ts-font-size-base);color:var(--ts-color-text);border-right:none;justify-content:flex-start;padding:0 12px}.assignment-body-cell{grid-template-columns:minmax(0, 1fr) var(--ts-remaining-w) var(--ts-comments-w);align-items:center;column-gap:0;width:100%;display:grid}.assignment-body-cell--with-dates{grid-template-columns:minmax(0, 1fr) var(--ts-assignment-date-w) var(--ts-assignment-date-w) var(--ts-remaining-w) var(--ts-comments-w)}.assignment-text{white-space:nowrap;text-overflow:ellipsis;min-width:0;display:block;overflow:hidden}.assignment-date-value{text-align:center;height:100%;color:var(--ts-color-text-muted);font-variant-numeric:tabular-nums;white-space:nowrap;justify-content:center;align-items:center;font-size:12px;display:flex}.assignment-column,.assignment-date-column,.remaining-column,.comments-column{height:100%}.assignment-header-cell .assignment-column,.assignment-header-cell .assignment-date-column,.assignment-header-cell .remaining-column,.assignment-header-cell .comments-column{border-bottom:1px solid var(--ts-color-sep);border-right-color:var(--ts-color-sep);border-right-style:solid;border-right-width:1px}.assignment-header-cell .remaining-column,.assignment-header-cell .comments-column{justify-content:center}.assignment-column{align-items:center;min-width:0;padding:0 8px 0 0;display:flex}.assignment-text-column{justify-content:flex-start}.assignment-date-column{padding:0 8px}.remaining-column{justify-content:center;align-items:center;height:100%;padding:0 6px;display:flex}.comments-column{justify-content:center;align-items:center;padding:0;display:flex}.comments-button{color:#9ca3af;cursor:pointer;background:0 0;border:none;border-radius:8px;justify-content:center;align-items:center;width:30px;height:30px;transition:background .12s,color .12s;display:inline-flex}.comments-button:hover{background:#2563eb1a}.comments-icon{box-sizing:border-box;border:2px solid;border-radius:4px;width:18px;height:14px;display:block;position:relative}.comments-icon:after{content:"";border-bottom:2px solid;border-left:2px solid;width:6px;height:6px;position:absolute;bottom:-5px;left:3px;transform:skew(-18deg)rotate(-30deg)}.comments-button--active{color:#2563eb}.remaining-editor{width:var(--ts-remaining-w);min-width:var(--ts-remaining-w);flex:none;justify-content:center;align-items:center;height:32px;margin-left:0;display:inline-flex;position:relative}.remaining-editor--hidden{visibility:hidden}.remaining-input{width:100%;min-width:100%;margin:0;padding:0 10px 0 4px;font-size:11px}.remaining-input.remaining-input--approved{background:var(--ts-color-approved-bg)}.remaining-input.remaining-input--approved:hover:not(:disabled),.remaining-input.remaining-input--approved:focus{background:var(--ts-color-approved-hover)}.remaining-input.remaining-input--rejected{background:var(--ts-color-rejected-bg)}.remaining-input.remaining-input--rejected:hover:not(:disabled),.remaining-input.remaining-input--rejected:focus{background:var(--ts-color-rejected-hover)}.remaining-input.remaining-input--pending{background:var(--ts-color-pending-bg)}.remaining-input.remaining-input--pending:hover:not(:disabled),.remaining-input.remaining-input--pending:focus{background:var(--ts-color-pending-hover)}.remaining-input.remaining-input--edited{background:var(--ts-color-edited-bg)}.remaining-input.remaining-input--edited:hover:not(:disabled),.remaining-input.remaining-input--edited:focus{background:var(--ts-color-edited-hover)}.remaining-lock-indicator{color:#64748b;pointer-events:none;opacity:.85;justify-content:center;align-items:center;width:12px;height:12px;font-size:9px;line-height:1;display:inline-flex;position:absolute;top:2px;right:2px}.remaining-lock-indicator.is-locked{color:#334155}.pane-right .body-cell{width:100%;font-weight:var(--ts-fw-semibold);color:#4f46e5;border-right:none;justify-content:center;padding:0}.project-label{height:var(--ts-project-row-h);min-height:var(--ts-project-row-h);align-items:center;padding:0 0 0 2px;display:flex}.project-pill{max-width:100%;height:var(--ts-project-row-h);font-size:10px;font-weight:var(--ts-fw-semibold);letter-spacing:.3px;text-transform:uppercase;border:1px solid #0000;border-radius:999px;align-items:center;padding:0 8px;line-height:1;display:inline-flex}.project-pill--clamped{white-space:nowrap;text-overflow:ellipsis;text-align:left;align-items:center;max-width:100%;display:inline-flex;overflow:hidden}.weekend-header,.weekend-cell{background:var(--ts-color-weekend-bg)}.grid-row:hover .weekend-cell{background:#e8edfb}.approved-cell .cell-input{background:var(--ts-color-approved-bg)}.approved-cell .cell-input:hover:not(:disabled),.approved-cell .cell-input:focus{background:var(--ts-color-approved-hover)}.rejected-cell .cell-input{background:var(--ts-color-rejected-bg)}.rejected-cell .cell-input:hover:not(:disabled),.rejected-cell .cell-input:focus{background:var(--ts-color-rejected-hover)}.pending-cell .cell-input{background:var(--ts-color-pending-bg)}.pending-cell .cell-input:hover:not(:disabled),.pending-cell .cell-input:focus{background:var(--ts-color-pending-hover)}.edited-cell .cell-input{background:var(--ts-color-edited-bg)}.edited-cell .cell-input:hover:not(:disabled),.edited-cell .cell-input:focus{background:var(--ts-color-edited-hover)}.locked-cell{background:var(--ts-color-locked-bg);pointer-events:none}.locked-cell .cell-input{opacity:0}.cell-input{box-sizing:border-box;width:calc(100% - 10px);height:32px;font-family:var(--ts-font);font-size:var(--ts-font-size-base);font-variant-numeric:tabular-nums;text-align:center;color:var(--ts-color-text);cursor:pointer;appearance:textfield;background:#ffffff80;border:1.5px solid #e9eaed;border-radius:6px;outline:none;margin:0 5px;transition:border-color .1s,background .1s}.cell-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.cell-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.cell-input:hover:not(:disabled){background:#ffffff8c;border-color:#d1d5db}.cell-input:focus{cursor:text;background:#fff;border-color:#4f46e5}.total-input{color:#4f46e5;font-weight:var(--ts-fw-semibold)}.total-input:focus{border-color:#4f46e5}.cell-input.assignment-locked-input,.approved-cell .cell-input.assignment-locked-input,.edited-cell .cell-input.assignment-locked-input,.rejected-cell .cell-input.assignment-locked-input,.pending-cell .cell-input.assignment-locked-input{color:#6b7280;cursor:not-allowed;background:#f3f4f6;border-color:#d1d5db}.cell-input.assignment-locked-input:hover:not(:disabled),.cell-input.assignment-locked-input:focus,.approved-cell .cell-input.assignment-locked-input:hover:not(:disabled),.approved-cell .cell-input.assignment-locked-input:focus,.edited-cell .cell-input.assignment-locked-input:hover:not(:disabled),.edited-cell .cell-input.assignment-locked-input:focus,.rejected-cell .cell-input.assignment-locked-input:hover:not(:disabled),.rejected-cell .cell-input.assignment-locked-input:focus,.pending-cell .cell-input.assignment-locked-input:hover:not(:disabled),.pending-cell .cell-input.assignment-locked-input:focus{color:#6b7280;background:#f3f4f6;border-color:#d1d5db}.grid-footer{z-index:30;background:var(--ts-color-header-bg);min-width:max-content;display:flex;position:sticky;bottom:0;box-shadow:inset 0 1px #e5e7ebd9}.grid-footer .pane-left,.grid-footer .pane-right{background:var(--ts-color-header-bg);z-index:31}.footer-cell{height:var(--ts-cell-h);font-variant-numeric:tabular-nums;font-size:var(--ts-font-size-sm);font-weight:var(--ts-fw-semibold);color:var(--ts-color-text-muted);justify-content:center;align-items:center;display:flex}.pane-left .footer-cell{text-transform:uppercase;letter-spacing:.4px;justify-content:flex-start;width:100%;padding:0 12px}.pane-right .footer-cell{justify-content:center;width:100%}.grand-total-cell{color:#4f46e5;font-weight:var(--ts-fw-semibold)}.day-cell--rule-violation{color:#b91c1c;background:#fee2e2;font-weight:700}.total-header--rule-violation{background:#fee2e2}.total-header--rule-violation .day-num,.total-header--rule-violation .day-name{color:#b91c1c}.grand-total-cell--rule-violation{color:#b91c1c;background:#fee2e2;font-weight:700}.grid-actions{border-top:1px solid var(--ts-color-sep);background:var(--ts-color-surface);justify-content:flex-end;gap:10px;padding:12px;display:flex}.pill-action-btn{width:var(--ts-action-btn-w);color:#334155;height:36px;font-family:var(--ts-font);letter-spacing:.01em;cursor:pointer;background:linear-gradient(#fff 0%,#f8fafc 100%);border:1px solid #d1d5db;border-radius:999px;font-size:13px;font-weight:600;transition:background .12s,border-color .12s,box-shadow .12s,transform 60ms}.pill-action-btn:hover:not(:disabled){background:linear-gradient(#f8faff 0%,#eef2ff 100%);border-color:#c7d2fe;box-shadow:0 2px 8px #4f46e51f}.pill-action-btn:active:not(:disabled){background:linear-gradient(#eaeffe 0%,#e0e7ff 100%);transform:translateY(1px)}.pill-action-btn--primary{color:#1e3a8a;background:linear-gradient(#eff6ff 0%,#dbeafe 100%);border-color:#93c5fd}.pill-action-btn--primary:hover:not(:disabled){background:linear-gradient(#e0edff 0%,#cfe3ff 100%);border-color:#60a5fa;box-shadow:0 4px 12px #60a5fa3d}.pill-action-btn--primary:active:not(:disabled){background:linear-gradient(#cfe3ff 0%,#bfdbfe 100%)}.pill-action-btn--recall{color:#9d174d;background:linear-gradient(#fdf2f8 0%,#fce7f3 100%);border-color:#f9a8d4}.pill-action-btn--recall:hover:not(:disabled){background:linear-gradient(#fce7f3 0%,#fbcfe8 100%);border-color:#f472b6;box-shadow:0 4px 12px #f472b638}.pill-action-btn--recall:active:not(:disabled){background:linear-gradient(#fbcfe8 0%,#f9a8d4 100%)}.pill-action-btn:disabled{opacity:.6;cursor:not-allowed}.assignment-modal-backdrop{z-index:1000;background:#0f172a73;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.assignment-modal{background:#fff;border:1px solid #e5e7eb;border-radius:12px;flex-direction:column;width:min(920px,100vw - 40px);max-height:calc(100vh - 60px);display:flex;box-shadow:0 18px 48px #0f172a47}.assignment-modal-header{border-bottom:1px solid #eef2f7;justify-content:space-between;align-items:center;padding:14px 16px;display:flex}.assignment-modal-header h2{color:#0f172a;margin:0;font-size:17px;font-weight:600}.assignment-modal-close{color:#4338ca;cursor:pointer;background:#eef2ff;border:none;border-radius:999px;width:30px;height:30px;font-size:18px;line-height:1}.assignment-modal-close:hover{background:#e0e7ff}.assignment-modal-body{padding:12px 16px;overflow:auto}.assignment-modal-empty{color:#64748b;padding:8px 2px;font-size:13px}.assignment-list{flex-direction:column;gap:8px;display:flex}.assignment-project-group{background:#fcfdff;border:1px solid #eef2f7;border-radius:10px;padding:6px 10px}.assignment-project-group .project-label{min-height:26px;padding:0}.assignment-project-toggle{cursor:pointer;text-align:left;background:0 0;border:none;align-items:center;gap:8px;width:100%;padding:0;display:flex}.assignment-project-toggle:hover .project-pill{filter:brightness(.98)}.assignment-project-count{color:#64748b;font-variant-numeric:tabular-nums;margin-left:auto;font-size:11px;font-weight:600}.assignment-project-chevron{text-align:center;color:#475569;width:14px;font-size:12px}.assignment-item{grid-template-columns:24px minmax(220px,2fr) minmax(150px,1fr) minmax(120px,1fr);align-items:center;gap:10px;min-height:38px;padding:4px 2px;display:grid}.assignment-item+.assignment-item{border-top:1px solid #f1f5f9}.assignment-item input[type=checkbox]{accent-color:#4f46e5;width:16px;height:16px}.assignment-item-name{color:#0f172a;white-space:nowrap;text-overflow:ellipsis;font-size:13px;font-weight:500;overflow:hidden}.assignment-item-meta{color:#64748b;font-variant-numeric:tabular-nums;white-space:nowrap;font-size:12px}.assignment-modal-actions{border-top:1px solid #eef2f7;justify-content:flex-end;gap:10px;padding:12px 16px 16px;display:flex}.comments-modal{background:#fff;border:1px solid #e5e7eb;border-radius:12px;flex-direction:column;width:min(780px,100vw - 40px);max-height:calc(100vh - 60px);display:flex;box-shadow:0 18px 48px #0f172a47}.comments-modal-body{flex-direction:column;gap:10px;padding:14px 16px;display:flex;overflow:auto}.comments-history{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;min-height:120px;max-height:280px;padding:10px;overflow:auto}.comments-history-content{color:#0f172a;font-size:13px;line-height:1.5}.comments-empty{color:#64748b;font-size:13px}.comments-input-label{color:#334155;font-size:12px;font-weight:600}.comments-textarea{resize:vertical;width:100%;min-height:90px;font:inherit;color:#0f172a;background:#fff;border:1px solid #cbd5e1;border-radius:8px;padding:8px 10px}.comments-textarea:focus{border-color:#6366f1;outline:none;box-shadow:0 0 0 2px #6366f126}.grid-save-error{color:#b42318;margin-top:4px;font-size:12px}.timesheet-page{padding:16px}.app-header{background:#fff;border:1px solid #e5e7eb;border-radius:12px;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px;padding:10px 12px;display:flex}.app-header-left{align-items:center;gap:10px;min-width:0;display:flex}.app-header-right{align-items:center;gap:10px;display:flex}.app-header-right .pill-action-btn,.app-header-right .app-header-status{width:calc(var(--ts-action-btn-w) + 5px)}.app-header .pill-action-btn--submit{color:#111827;background:linear-gradient(#dcfce7 0%,#bbf7d0 100%);border-color:#86efac}.app-header .pill-action-btn--submit:hover:not(:disabled){background:linear-gradient(#cffce1 0%,#a7f3c0 100%);border-color:#4ade80;box-shadow:0 3px 10px #4ade8040}.app-header .pill-action-btn--submit:active:not(:disabled){background:linear-gradient(#bbf7d0 0%,#86efac 100%)}.app-header .pill-action-btn--reject{color:#9f1239;background:linear-gradient(#fff1f2 0%,#ffe4e6 100%);border-color:#fecaca}.app-header .pill-action-btn--reject:hover:not(:disabled){background:linear-gradient(#ffe4e6 0%,#fecdd3 100%);border-color:#fda4af;box-shadow:0 3px 10px #f43f5e33}.app-header .pill-action-btn--reject:active:not(:disabled){background:linear-gradient(#fecdd3 0%,#fda4af 100%)}.app-header .pill-action-btn:disabled{opacity:1;color:#9ca3af;box-shadow:none;cursor:not-allowed;background:#f3f4f6;border-color:#d1d5db}.timesheet-comments-btn{color:#9ca3af;cursor:pointer;background:linear-gradient(#fff 0%,#f8fafc 100%);border:1px solid #d1d5db;border-radius:999px;justify-content:center;align-items:center;width:36px;min-width:36px;height:36px;transition:background .12s,border-color .12s,box-shadow .12s,color .12s,transform 60ms;display:inline-flex}.timesheet-comments-btn:hover{background:linear-gradient(#f8faff 0%,#eef2ff 100%);border-color:#c7d2fe;box-shadow:0 2px 8px #4f46e51f}.timesheet-comments-btn:active{transform:translateY(1px)}.timesheet-comments-btn.has-comments{color:#2563eb;background:linear-gradient(#eff6ff 0%,#dbeafe 100%);border-color:#93c5fd}.timesheet-comments-icon{box-sizing:border-box;border:2px solid;border-radius:4px;width:16px;height:12px;display:block;position:relative}.timesheet-comments-icon:after{content:"";border-bottom:2px solid;border-left:2px solid;width:5px;height:5px;position:absolute;bottom:-5px;left:2px;transform:skew(-18deg)rotate(-30deg)}.app-header-alert{color:#991b1b;background:#fef2f2;border:1px solid #fecaca;border-radius:10px;align-items:center;gap:8px;margin:0 0 10px;padding:10px 12px 10px 8px;font-size:13px;font-weight:600;display:flex}.app-header-alert--error{color:#991b1b;background:#fef2f2;border-color:#fecaca}.app-header-alert-close{width:20px;height:20px;color:inherit;cursor:pointer;background:0 0;border:none;border-radius:4px;flex:none;padding:0;font-size:16px;font-weight:700;line-height:1}.app-header-alert-close:hover{background:#991b1b1a}.app-header-alert-text{min-width:0}.app-header-nav-btn{color:#0f172a;height:40px;font-family:var(--ts-font);letter-spacing:.01em;cursor:pointer;background:#fff;border:1px solid #d1d5db;border-radius:10px;padding:0 14px;font-size:13px;font-weight:600;line-height:1}.app-header-nav-btn:hover{background:#f8fafc;border-color:#cbd5e1}.app-header-back-btn{white-space:nowrap}.app-header-period-nav{align-items:center;gap:8px;min-width:0;display:flex}.app-header-arrow-btn{width:40px;padding:0;font-size:13px}.app-header-period-label{color:#0f172a;white-space:nowrap;border:1px solid #d1d5db;border-radius:10px;align-items:center;height:40px;padding:0 12px;font-size:18px;font-weight:600;display:flex}.app-header-jump-btn{white-space:nowrap}.app-header-group-gap{flex:0 0 clamp(8px,5vw,72px);width:clamp(8px,5vw,72px)}.app-header-date-input{opacity:0;pointer-events:none;width:0;height:0;position:absolute}.app-header-status{width:var(--ts-action-btn-w);letter-spacing:.01em;white-space:nowrap;border:2px dotted #0000;border-radius:999px;justify-content:center;align-items:center;height:36px;padding:0 10px;font-family:inherit;font-size:13px;font-weight:600;display:inline-flex}.app-header-status--draft{color:#475569;background:#f8fafc;border-color:#64748b}.app-header-status--submitted{color:#b45309;background:#fffbeb;border-color:#d97706}.app-header-status--approved{color:#15803d;background:#f0fdf4;border-color:#16a34a}.app-header-status--partially-approved{color:#1d4ed8;background:#eff6ff;border-color:#3b82f6}.app-header-status--rejected{color:#be123c;background:#fff1f2;border-color:#e11d48}.app-header-jump-backdrop{z-index:1200;background:#0f172a73;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.timesheet-comments-backdrop{z-index:1100;background:#0f172a73;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.timesheet-comments-modal{background:#fff;border:1px solid #e5e7eb;border-radius:12px;flex-direction:column;width:min(780px,100vw - 40px);max-height:calc(100vh - 60px);display:flex;box-shadow:0 18px 48px #0f172a47}.timesheet-comments-modal-header{border-bottom:1px solid #eef2f7;justify-content:space-between;align-items:center;padding:14px 16px;display:flex}.timesheet-comments-modal-header h2{color:#0f172a;margin:0;font-size:17px;font-weight:600}.timesheet-comments-close{color:#4338ca;cursor:pointer;background:#eef2ff;border:none;border-radius:999px;width:30px;height:30px;font-size:18px;line-height:1}.timesheet-comments-close:hover:not(:disabled){background:#e0e7ff}.timesheet-comments-close:disabled{opacity:.6;cursor:not-allowed}.timesheet-comments-modal-body{flex-direction:column;gap:10px;padding:14px 16px;display:flex;overflow:auto}.timesheet-comments-history{background:#f8fafc;border:1px solid #e2e8f0;border-radius:8px;min-height:120px;max-height:280px;padding:10px;overflow:auto}.timesheet-comments-history-content{color:#0f172a;font-size:13px;line-height:1.5}.timesheet-comments-empty{color:#64748b;font-size:13px}.timesheet-comments-label{color:#334155;font-size:12px;font-weight:700}.timesheet-comments-textarea{resize:vertical;width:100%;min-height:90px;font:inherit;color:#0f172a;background:#fff;border:1px solid #cbd5e1;border-radius:8px;padding:8px 10px}.timesheet-comments-textarea:focus{border-color:#6366f1;outline:none;box-shadow:0 0 0 2px #6366f126}.timesheet-comments-error{color:#b91c1c;font-size:12px;font-weight:600}.timesheet-comments-modal-actions{border-top:1px solid #eef2f7;justify-content:flex-end;gap:10px;padding:12px 16px 16px;display:flex}.app-header-jump-modal{background:#fff;border:1px solid #e2e8f0;border-radius:16px;width:min(640px,100vw - 48px);padding:24px;box-shadow:0 22px 60px #0f172a47}.app-header-jump-title{color:#0f172a;margin:0 0 8px;font-size:26px;font-weight:700}.app-header-jump-subtitle{color:#475569;margin:0 0 18px;font-size:15px}.app-header-jump-input{color:#0f172a;background:#fff;border:1px solid #cbd5e1;border-radius:12px;width:100%;height:56px;padding:0 16px;font-size:18px;font-weight:600}.app-header-jump-input:focus{border-color:#6366f1;outline:none;box-shadow:0 0 0 3px #6366f129}.app-header-jump-actions{justify-content:flex-end;gap:10px;margin-top:18px;display:flex}.app-header-jump-confirm{color:#1e3a8a;background:linear-gradient(#eff6ff 0%,#dbeafe 100%);border-color:#93c5fd}.app-header-jump-confirm:hover{background:linear-gradient(#e0edff 0%,#cfe3ff 100%);border-color:#60a5fa}@media (width<=1280px){.app-header{flex-direction:column;align-items:stretch}.app-header-left,.app-header-right{flex-wrap:wrap}.app-header-group-gap{flex-basis:clamp(8px,3vw,32px);width:clamp(8px,3vw,32px)}}
