:root{color-scheme:light dark;--color-bg: #f7f8f8;--color-surface: #ffffff;--color-surface-alt: #f2f4f4;--color-zebra: #f4f7f7;--color-weekend: #f4f6f6;--color-track: #e9ecec;--color-hairline: #e5e5e5;--color-divider: #edefef;--color-border-control: #879292;--color-text: #3a3a3a;--color-body: #4b4f58;--color-muted: #68707b;--color-faint: #69727b;--color-placeholder: #c2c8c8;--color-primary: #a11f22;--color-primary-hover: #8a1a1d;--color-danger-text: #a11f22;--color-on-accent: #ffffff;--color-accent: #1d4354;--color-accent-hover: #16333f;--color-accent-soft: #edf2f4;--color-accent-dim: #a9c0cb;--color-topbar: #1d4354;--color-topbar-text: #ffffff;--color-topbar-hover: rgba(255, 255, 255, .1);--color-avatar-bg: #1d4354;--color-avatar-text: #ffffff;--pill-draft-bg: #f4f6f6;--pill-draft-text: #68707b;--pill-submitted-bg: #e5edf0;--pill-submitted-text: #1d4354;--pill-locked-bg: #e9ecec;--pill-locked-text: #4b4f58;--pill-alert-bg: #f7ecec;--pill-alert-text: #a11f22;--shadow-card: 0 1px 2px rgba(29, 67, 84, .06);--shadow-pop: 0 2px 8px rgba(29, 67, 84, .14);--shadow-sticky: 0 1px 0 var(--color-hairline), 0 3px 4px rgba(29, 67, 84, .05);--focus-ring: 0 0 0 2px rgba(29, 67, 84, .16);--focus-ring-error: 0 0 0 2px rgba(161, 31, 34, .14);--scrim: rgba(29, 67, 84, .28);--radius-control: 4px;--radius-card: 6px;--radius-pill: 3px;--font-head: "Outfit", "Segoe UI", system-ui, sans-serif;--font-body: "Open Sans", "Segoe UI", system-ui, sans-serif;--font-mono: "IBM Plex Mono", Consolas, monospace;--topbar-height: 44px;--header-height: 52px;--sidebar-width: 208px;--control-height: 30px}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--color-bg: #141b1f;--color-surface: #1b2429;--color-surface-alt: #222c32;--color-zebra: #1f292f;--color-weekend: #182126;--color-track: #2a353b;--color-hairline: #2a353b;--color-divider: #232d33;--color-border-control: #64737d;--color-text: #e6e9ea;--color-body: #c9d0d3;--color-muted: #9aa5ab;--color-faint: #8b969c;--color-placeholder: #63707a;--color-primary: #d0393c;--color-primary-hover: #e2585b;--color-danger-text: #e86e70;--color-on-accent: #ffffff;--color-accent: #7fa7bf;--color-accent-hover: #a3c3d6;--color-accent-soft: #1e3540;--color-accent-dim: #a9c0cb;--color-topbar: #1d4354;--color-topbar-text: #ffffff;--color-topbar-hover: rgba(255, 255, 255, .12);--color-avatar-bg: #35637a;--color-avatar-text: #ffffff;--pill-draft-bg: #262f35;--pill-draft-text: #a7b1b7;--pill-submitted-bg: #1c3644;--pill-submitted-text: #a6cade;--pill-locked-bg: #2b3439;--pill-locked-text: #c9d0d3;--pill-alert-bg: #3a2124;--pill-alert-text: #f0a2a4;--shadow-card: 0 1px 2px rgba(0, 0, 0, .4);--shadow-pop: 0 2px 10px rgba(0, 0, 0, .55);--shadow-sticky: 0 1px 0 var(--color-hairline), 0 3px 4px rgba(0, 0, 0, .35);--focus-ring: 0 0 0 2px rgba(127, 167, 191, .35);--focus-ring-error: 0 0 0 2px rgba(208, 57, 60, .35);--scrim: rgba(0, 0, 0, .6)}}:root[data-theme=dark]{color-scheme:dark;--color-bg: #141b1f;--color-surface: #1b2429;--color-surface-alt: #222c32;--color-zebra: #1f292f;--color-weekend: #182126;--color-track: #2a353b;--color-hairline: #2a353b;--color-divider: #232d33;--color-border-control: #64737d;--color-text: #e6e9ea;--color-body: #c9d0d3;--color-muted: #9aa5ab;--color-faint: #8b969c;--color-placeholder: #63707a;--color-primary: #d0393c;--color-primary-hover: #e2585b;--color-danger-text: #e86e70;--color-on-accent: #ffffff;--color-accent: #7fa7bf;--color-accent-hover: #a3c3d6;--color-accent-soft: #1e3540;--color-accent-dim: #a9c0cb;--color-topbar: #1d4354;--color-topbar-text: #ffffff;--color-topbar-hover: rgba(255, 255, 255, .12);--color-avatar-bg: #35637a;--color-avatar-text: #ffffff;--pill-draft-bg: #262f35;--pill-draft-text: #a7b1b7;--pill-submitted-bg: #1c3644;--pill-submitted-text: #a6cade;--pill-locked-bg: #2b3439;--pill-locked-text: #c9d0d3;--pill-alert-bg: #3a2124;--pill-alert-text: #f0a2a4;--shadow-card: 0 1px 2px rgba(0, 0, 0, .4);--shadow-pop: 0 2px 10px rgba(0, 0, 0, .55);--shadow-sticky: 0 1px 0 var(--color-hairline), 0 3px 4px rgba(0, 0, 0, .35);--focus-ring: 0 0 0 2px rgba(127, 167, 191, .35);--focus-ring-error: 0 0 0 2px rgba(208, 57, 60, .35);--scrim: rgba(0, 0, 0, .6)}*,*:before,*:after{box-sizing:border-box}html,body{height:100%}body{margin:0;background:var(--color-bg);color:var(--color-text);font-family:var(--font-body);font-size:13px;line-height:1.45;-webkit-font-smoothing:antialiased}#app{height:100%}a{color:var(--color-accent);text-decoration:none}a:hover{color:var(--color-accent-hover)}h1,h2,h3{font-family:var(--font-head);margin:0;font-weight:600;letter-spacing:-.01em}h1{font-size:20px}h2{font-size:14px}h3{font-size:13px}.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-size:12.5px}.muted{color:var(--color-muted)}.faint{color:var(--color-faint)}.meta{font-size:12px;color:var(--color-muted)}.spacer{flex-grow:1}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}.card{background:var(--color-surface);border:1px solid var(--color-hairline);border-radius:var(--radius-card)}.panel{background:var(--color-surface);border:1px solid var(--color-hairline);border-radius:var(--radius-card);padding:16px;display:flex;flex-direction:column;gap:12px}.section-head{font-family:var(--font-head);font-size:14px;font-weight:600}.btn{font-family:var(--font-body);font-size:13px;font-weight:500;padding:7px 14px;border-radius:var(--radius-control);border:1px solid transparent;background:var(--color-surface);color:var(--color-text);cursor:pointer;display:inline-flex;align-items:center;gap:7px;line-height:1.2}.btn:focus-visible{outline:none;border-color:var(--color-accent);box-shadow:var(--focus-ring)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn-primary{background:var(--color-primary);color:var(--color-on-accent);border-color:var(--color-primary)}.btn-primary:hover:not(:disabled){background:var(--color-primary-hover);border-color:var(--color-primary-hover)}.btn-secondary{background:var(--color-surface);border-color:var(--color-border-control);color:var(--color-text)}.btn-secondary:hover:not(:disabled){background:var(--color-surface-alt)}.btn-ghost{background:transparent;border-color:transparent;color:var(--color-muted)}.btn-ghost:hover:not(:disabled){color:var(--color-text)}.btn-link{background:none;border:none;padding:0;color:var(--color-accent);font-size:12.5px;font-weight:500;cursor:pointer;font-family:var(--font-body)}.btn-link:hover{color:var(--color-accent-hover)}.btn-icon{width:28px;height:28px;padding:0;justify-content:center;background:var(--color-surface);border:1px solid var(--color-border-control);border-radius:var(--radius-control);cursor:pointer;display:inline-flex;align-items:center;color:var(--color-text)}.btn-icon:hover:not(:disabled){background:var(--color-surface-alt)}.btn-icon:disabled{opacity:.4;cursor:not-allowed}.btn-sm{font-size:12.5px;padding:5px 11px}.field{display:flex;flex-direction:column;gap:5px}.field>label,.label{font-size:12px;font-weight:600;color:var(--color-text)}.label-note{font-size:11px;font-weight:400;color:var(--color-muted)}.req{color:var(--color-danger-text);font-weight:600}.input,.select,.textarea{height:var(--control-height);background:var(--color-surface);border:1px solid var(--color-border-control);border-radius:var(--radius-control);padding:0 9px;font-family:var(--font-body);font-size:13px;color:var(--color-text);width:100%}.textarea{height:auto;min-height:67px;padding:7px 9px;font-size:12.5px;line-height:17px;resize:vertical}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--color-accent);box-shadow:var(--focus-ring)}.input:disabled,.select:disabled,.textarea:disabled{background:var(--color-surface-alt);color:var(--color-muted);cursor:not-allowed}.input.invalid,.textarea.invalid{border-color:var(--color-primary)}.field-error{font-size:11.5px;color:var(--color-danger-text)}.checkbox-row{display:flex;align-items:center;gap:7px;font-size:12.5px;font-weight:400}.checkbox-row input{accent-color:var(--color-primary)}.pill{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:500;line-height:1.3;padding:2px 7px;border-radius:var(--radius-pill);background:var(--pill-draft-bg);color:var(--pill-draft-text);white-space:nowrap}.pill-draft{background:var(--pill-draft-bg);color:var(--pill-draft-text)}.pill-submitted{background:var(--pill-submitted-bg);color:var(--pill-submitted-text)}.pill-locked{background:var(--pill-locked-bg);color:var(--pill-locked-text)}.pill-alert{background:var(--pill-alert-bg);color:var(--pill-alert-text)}.banner{display:flex;align-items:flex-start;gap:9px;padding:9px 12px;border-radius:var(--radius-control);border:1px solid var(--color-hairline);background:var(--color-surface);font-size:12.5px}.banner svg{flex-shrink:0;margin-top:1px}.banner-error{border-color:var(--color-hairline);background:var(--pill-alert-bg);color:var(--pill-alert-text)}.banner-info{border-color:var(--color-hairline);background:var(--pill-submitted-bg);color:var(--pill-submitted-text)}.banner-success{border-color:var(--color-hairline);background:var(--pill-locked-bg);color:var(--pill-locked-text)}.state-block{padding:40px 24px;display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;color:var(--color-muted);font-size:12.5px}.state-block .state-title{font-family:var(--font-head);font-size:14px;font-weight:600;color:var(--color-text)}.skeleton{display:flex;flex-direction:column;gap:10px;padding:16px}.skeleton-row{height:14px;border-radius:3px;background:var(--color-divider)}.table{width:100%;border-collapse:collapse;font-size:13px}.table thead th{height:34px;padding:0 16px;text-align:left;background:var(--color-surface-alt);border-bottom:1px solid var(--color-hairline);font-size:10.5px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--color-faint);white-space:nowrap}.table tbody td{padding:10px 16px;border-bottom:1px solid var(--color-divider);vertical-align:middle}.table tbody tr:last-child td{border-bottom:none}.table td.right,.table th.right{text-align:right}.table-scroll{overflow:auto;min-height:0}.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.toolbar .select,.toolbar .input{width:auto;min-width:160px}.avatar{width:30px;height:30px;flex-shrink:0;border-radius:50%;background:var(--color-avatar-bg);color:var(--color-avatar-text);font-size:11.5px;font-weight:600;display:flex;align-items:center;justify-content:center}.avatar-sm{width:26px;height:26px;font-size:11px}.modal-backdrop{position:fixed;inset:0;background:var(--scrim);display:flex;align-items:center;justify-content:center;z-index:40}.modal{width:380px;max-width:calc(100vw - 32px);background:var(--color-surface);border:1px solid var(--color-hairline);border-radius:var(--radius-card);box-shadow:var(--shadow-pop);padding:18px;display:flex;flex-direction:column;gap:12px}.modal-title{font-family:var(--font-head);font-size:15px;font-weight:600}.modal-body{font-size:12.5px;color:var(--color-muted)}.modal-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px}.shell{display:flex;flex-direction:column;height:100%;background:var(--color-bg);color:var(--color-text);overflow:hidden}.topbar{height:var(--topbar-height);flex-shrink:0;background:var(--color-topbar);display:flex;align-items:center;padding:0 20px;gap:10px}.brand-mark{width:22px;height:22px;flex-shrink:0;border-radius:var(--radius-control);background:var(--color-primary);color:var(--color-on-accent);display:flex;align-items:center;justify-content:center}.brand-word{font-family:var(--font-head);font-weight:600;font-size:16px;color:var(--color-topbar-text);letter-spacing:-.01em}.topbar-date{font-family:var(--font-mono);font-size:12px;color:var(--color-accent-dim)}.topbar-icon-btn{width:28px;height:28px;flex-shrink:0;padding:0;border:1px solid transparent;border-radius:var(--radius-control);background:transparent;color:var(--color-accent-dim);cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.topbar-icon-btn:hover{color:var(--color-topbar-text);background:var(--color-topbar-hover)}.topbar-icon-btn:focus-visible{outline:none;border-color:var(--color-topbar-text)}.shell-main{flex-grow:1;display:flex;min-height:0}.sidebar{width:var(--sidebar-width);flex-shrink:0;background:var(--color-surface);border-right:1px solid var(--color-hairline);display:flex;flex-direction:column}.sidebar-nav{display:flex;flex-direction:column;gap:2px;padding:14px 8px 8px}.nav-item{height:34px;display:flex;align-items:center;gap:10px;padding:0 14px;border-left:3px solid transparent;font-family:var(--font-head);font-size:13px;font-weight:500;color:var(--color-body)}.nav-item:hover{color:var(--color-accent);background:var(--color-surface-alt)}.nav-item svg{flex-shrink:0}.nav-item.active{color:var(--color-accent);font-weight:600;border-left-color:var(--color-accent);background:var(--color-accent-soft)}.sidebar-user{padding:14px 16px;border-top:1px solid var(--color-hairline);display:flex;align-items:center;gap:10px}.sidebar-user .avatar{width:26px;height:26px;font-size:11px}.sidebar-user-name{font-size:12.5px;color:var(--color-body);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-signout{background:none;border:none;padding:0;color:var(--color-muted);cursor:pointer;display:flex;align-items:center}.sidebar-signout:hover{color:var(--color-accent)}.content{flex-grow:1;display:flex;flex-direction:column;min-width:0;min-height:0}.appbar{height:var(--header-height);flex-shrink:0;background:var(--color-surface);border-bottom:1px solid var(--color-hairline);display:flex;align-items:center;padding:0 24px;gap:12px}.appbar-title{font-family:var(--font-head);font-size:20px;font-weight:600;color:var(--color-text);letter-spacing:-.01em}.appbar-actions{display:flex;align-items:center;gap:10px}.page-body{padding:20px 24px;overflow:hidden;display:flex;flex-direction:column;gap:16px;flex-grow:1;min-height:0}.auth-page{height:100%;display:flex;align-items:center;justify-content:center;background:var(--color-bg);padding:24px}.auth-card{width:360px;max-width:100%;background:var(--color-surface);border:1px solid var(--color-hairline);border-radius:var(--radius-card);box-shadow:var(--shadow-card);padding:26px 24px;display:flex;flex-direction:column;gap:16px}.auth-brand{display:flex;align-items:center;gap:10px}.auth-brand .brand-word{color:var(--color-accent)}.auth-heading{display:flex;flex-direction:column;gap:4px}.auth-heading h1{font-size:18px}.auth-heading p{margin:0}.auth-form{display:flex;flex-direction:column;gap:12px}.auth-form .btn-primary{justify-content:center}.auth-links{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:12.5px}@media(max-width:900px){.shell-main{flex-direction:column;overflow:auto}.sidebar{width:100%;flex-direction:row;align-items:center;overflow-x:auto;border-right:none;border-bottom:1px solid var(--color-hairline)}.sidebar-nav{flex-direction:row;padding:8px}.nav-item{border-left:none;border-bottom:3px solid transparent;white-space:nowrap}.nav-item.active{border-left-color:transparent;border-bottom-color:var(--color-accent)}.sidebar-user{border-top:none;border-left:1px solid var(--color-hairline)}.topbar-date{display:none}.page-body{padding:16px;overflow:visible}}.password-rules{display:flex;flex-direction:column;gap:4px;margin-top:6px}.password-rules>p{margin:0}.password-rules .rule-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:3px}.password-rules .rule{display:flex;align-items:center;gap:6px;font-size:12px;line-height:1.4;color:var(--color-muted)}.password-rules .rule-mark{display:inline-flex;flex:none;color:var(--color-faint)}.password-rules .rule.met{color:var(--color-text)}.password-rules .rule.met .rule-mark{color:var(--color-accent)}.ts-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;flex-shrink:0}.week-nav{display:flex;align-items:center;gap:8px}.week-label{font-family:var(--font-mono);font-size:13px;font-weight:500;letter-spacing:-.01em;min-width:148px;text-align:center}.week-total{display:flex;flex-direction:column;align-items:flex-end;gap:6px}.week-total-line{display:flex;align-items:baseline;gap:8px}.week-total-value{font-family:var(--font-mono);font-size:14px;font-weight:600}.week-total-bar{width:196px;height:6px;background:var(--color-divider);border-radius:3px;overflow:hidden;display:flex}.week-total-fill{background:var(--color-accent)}.week-total-fill.over{background:var(--color-primary)}.ts-card{position:relative;background:var(--color-surface);border:1px solid var(--color-hairline);border-radius:var(--radius-card);overflow:hidden;display:flex;flex-direction:column;min-height:0;flex-grow:1}.ts-grid{display:grid;grid-template-columns:376px 128px repeat(7,minmax(72px,1fr)) 76px}.ts-head{position:relative;z-index:3;flex-shrink:0;background:var(--color-surface);box-shadow:var(--shadow-sticky)}.ts-scroll{position:relative;overflow:auto;min-height:0;flex-grow:1}.ts-foot{position:relative;z-index:3;flex-shrink:0}.ts-hcell{height:38px;display:flex;align-items:center;padding:0 16px;font-size:11px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--color-muted)}.ts-hcell.svc{padding:0 10px}.ts-hday{height:38px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;border-left:1px solid var(--color-divider)}.ts-hday .dow{font-size:10.5px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--color-muted)}.ts-hday .dom{font-family:var(--font-mono);font-size:12px;color:var(--color-muted)}.ts-hday.weekend{background:var(--color-weekend)}.ts-hday.weekend .dow,.ts-hday.weekend .dom{color:var(--color-faint)}.ts-hday.today{box-shadow:0 1px 0 var(--color-primary)}.ts-hday.today .dow,.ts-hday.today .dom{color:var(--color-text);font-weight:500}.ts-htotal{height:38px;display:flex;align-items:center;justify-content:flex-end;padding:0 16px;border-left:1px solid var(--color-divider);font-size:11px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--color-muted)}.ts-freeze{position:sticky;left:0;z-index:2;background:var(--color-surface)}.ts-group{font-family:var(--font-head);grid-column:1 / 10;height:28px;display:flex;align-items:center;padding:0 16px;background:var(--color-surface-alt);border-bottom:1px solid var(--color-divider);font-size:11.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--color-muted)}.ts-group-total{grid-column:10 / 11;height:28px;display:flex;align-items:center;justify-content:flex-end;padding:0 16px;background:var(--color-surface-alt);border-bottom:1px solid var(--color-divider);font-family:var(--font-mono);font-size:12px;color:var(--color-muted)}.ts-task{display:flex;flex-direction:column;gap:2px;padding:10px 16px;border-bottom:1px solid var(--color-divider);min-width:0}.ts-task-name{font-size:13px;font-weight:600;line-height:17px}.ts-task-project{font-size:12px;color:var(--color-muted);line-height:16px}.ts-task-note{font-family:var(--font-mono);font-size:11px;color:var(--color-faint);line-height:14px}.ts-svc{display:flex;align-items:center;padding:0 10px;border-bottom:1px solid var(--color-divider);min-width:0}.ts-svc-field{display:flex;flex-direction:column;gap:3px;width:100%;min-width:0}.ts-svc-select{height:28px;padding:0 6px;font-size:12px;min-width:0}.ts-svc-field .field-error{font-size:11px;line-height:14px}.ts-cell{display:flex;align-items:center;justify-content:center;padding:0 7px;border-bottom:1px solid var(--color-divider);border-left:1px solid var(--color-divider)}.ts-task.zebra,.ts-svc.zebra,.ts-cell.zebra,.ts-total.zebra,.ts-freeze.zebra{background:var(--color-zebra)}.ts-cell.weekend,.ts-cell.zebra.weekend{background:var(--color-weekend)}.ts-cell-box{position:relative;width:100%;height:30px}.ts-input{width:100%;height:30px;background:var(--color-surface);border:1px solid var(--color-hairline);border-radius:var(--radius-control);text-align:center;font-family:var(--font-mono);font-size:12.5px;color:var(--color-text);padding:0 4px}.ts-input.filled{border-color:var(--color-border-control)}.ts-input::placeholder{color:var(--color-placeholder)}.ts-input:focus{outline:none;border-color:var(--color-accent);box-shadow:var(--focus-ring)}.ts-input.invalid{border-color:var(--color-primary);box-shadow:var(--focus-ring-error)}.ts-input:disabled{background:var(--color-surface-alt);color:var(--color-muted);cursor:not-allowed}.ts-note-flag{position:absolute;top:1px;right:1px;width:12px;height:12px;padding:0;border:none;background:none;cursor:pointer;overflow:hidden;border-top-right-radius:var(--radius-control)}.ts-note-flag:after{content:"";position:absolute;top:0;right:0;width:0;height:0;border-top:6px solid var(--color-accent);border-left:6px solid transparent}.ts-note-flag:focus-visible{outline:1px solid var(--color-accent)}.ts-total{display:flex;align-items:center;justify-content:flex-end;padding:0 16px;border-bottom:1px solid var(--color-divider);border-left:1px solid var(--color-divider);font-family:var(--font-mono);font-size:13px;font-weight:600}.ts-fcell{grid-column:1 / 3;height:40px;display:flex;align-items:center;padding:0 16px;background:var(--color-surface-alt);border-top:1px solid var(--color-hairline);font-size:12px;font-weight:600;letter-spacing:.02em}.ts-fday{height:40px;display:flex;align-items:center;justify-content:center;background:var(--color-surface-alt);border-top:1px solid var(--color-hairline);border-left:1px solid var(--color-divider);font-family:var(--font-mono);font-size:12.5px;font-weight:500}.ts-fday.zero{font-weight:400;color:var(--color-faint)}.ts-fday.weekend{background:var(--color-weekend)}.ts-ftotal{height:40px;display:flex;align-items:center;justify-content:flex-end;padding:0 16px;background:var(--color-surface-alt);border-top:1px solid var(--color-hairline);border-left:1px solid var(--color-divider);font-family:var(--font-mono);font-size:13.5px;font-weight:500}.ts-footnote{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-shrink:0;font-size:12px;color:var(--color-muted)}.ts-pop{position:absolute;z-index:20;width:300px;background:var(--color-surface);border:1px solid var(--color-hairline);border-radius:var(--radius-card);box-shadow:var(--shadow-pop);padding:14px;display:flex;flex-direction:column;gap:10px}.ts-pop-head{display:flex;align-items:baseline;gap:3px}.ts-pop-title{font-size:12px;font-weight:600}.ts-pop-hint{font-size:11px;color:var(--color-muted)}.ts-pop-row{display:flex;align-items:center;gap:10px}.ts-pop-row .input{width:86px;font-family:var(--font-mono);font-size:12.5px;text-align:left}.ts-pop-actions{display:flex;align-items:center;gap:6px}.ts-pop-context{font-size:11.5px;color:var(--color-muted);border-top:1px solid var(--color-divider);padding-top:8px}.stat-strip{display:flex;gap:12px;flex-shrink:0;flex-wrap:wrap}.stat-card{width:168px;background:var(--color-surface);border:1px solid var(--color-hairline);border-radius:var(--radius-card);padding:12px 14px;display:flex;flex-direction:column;gap:2px}.stat-value{font-family:var(--font-mono);font-size:22px;font-weight:600;line-height:1.1}.stat-value.accent{color:var(--color-accent)}.stat-value.neutral{color:var(--pill-locked-text)}.stat-value.alert{color:var(--color-danger-text)}.stat-label{font-size:12px;color:var(--color-muted)}.people-card{background:var(--color-surface);border:1px solid var(--color-hairline);border-radius:var(--radius-card);overflow:hidden;display:flex;flex-direction:column;min-height:0}.people-head{height:34px;display:flex;align-items:center;padding:0 16px;background:var(--color-surface-alt);border-bottom:1px solid var(--color-hairline);font-size:10.5px;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--color-faint);flex-shrink:0}.people-scroll{overflow:auto;min-height:0}.person-row{min-height:56px;display:flex;align-items:center;padding:0 16px;border-bottom:1px solid var(--color-divider);gap:0}.person-row:last-child{border-bottom:none}.col-person{width:260px;flex-shrink:0;display:flex;align-items:center;gap:10px;min-width:0}.person-name{font-size:13.5px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.col-split{width:148px;flex-shrink:0;padding-right:24px}.split-bar{height:8px;width:100%;border-radius:2px;background:var(--color-divider);overflow:hidden;display:flex}.split-bar .billable{background:var(--color-accent)}.split-bar .nonbillable{background:var(--color-track)}.col-hours{width:84px;flex-shrink:0;text-align:right;font-family:var(--font-mono);font-size:13px;color:var(--color-muted)}.col-total{width:82px;flex-shrink:0;text-align:right;font-family:var(--font-mono);font-size:15px;color:var(--color-text)}.col-status{width:128px;flex-shrink:0;padding-left:22px}.col-actions{flex-grow:1;display:flex;align-items:center;justify-content:flex-end;gap:8px}.list-card{background:var(--color-surface);border:1px solid var(--color-hairline);border-radius:var(--radius-card);overflow:hidden;display:flex;flex-direction:column;min-height:0}.read-only-note{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--color-muted)}.tree-row{display:flex;align-items:center;gap:10px;padding:9px 16px;border-bottom:1px solid var(--color-divider);min-height:44px}.tree-row.customer{background:var(--color-surface-alt);font-size:11.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--color-muted);min-height:28px;padding:0 16px}.tree-toggle{width:20px;height:20px;flex-shrink:0;border:none;background:none;padding:0;cursor:pointer;color:var(--color-muted);display:inline-flex;align-items:center;justify-content:center}.tree-toggle:hover{color:var(--color-text)}.tree-toggle .chev{transition:transform .12s ease}.tree-toggle[aria-expanded=true] .chev{transform:rotate(90deg)}.tree-toggle-spacer{width:20px;flex-shrink:0}.tree-name{flex-grow:1;min-width:0;display:flex;flex-direction:column;gap:1px}.tree-name .title{font-size:13px;font-weight:500}.tree-sow{width:220px;flex-shrink:0;text-align:right;font-family:var(--font-mono);font-size:12px;color:var(--color-muted)}.tree-sow .over{color:var(--color-danger-text)}.tree-status{width:108px;flex-shrink:0}.tree-children{padding-left:22px}.split-layout{display:flex;gap:16px;align-items:flex-start;min-height:0;flex-grow:1}.split-main{flex-grow:1;min-width:0;display:flex;flex-direction:column;min-height:0}.split-aside{width:320px;flex-shrink:0}.form-grid{display:flex;flex-direction:column;gap:12px}.role-set{display:flex;flex-direction:column;gap:6px;border:1px solid var(--color-hairline);border-radius:var(--radius-control);padding:10px 12px}.role-set legend{font-size:12px;font-weight:600;padding:0 4px}.badge-row{display:flex;gap:6px;flex-wrap:wrap}@media(max-width:1100px){.split-layout{flex-direction:column}.split-aside{width:100%}}@media(max-width:900px){.col-split,.col-hours{display:none}.col-person{width:180px}}.form-actions{display:flex;gap:8px;justify-content:flex-end}.field-row{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}.field-row>.field{flex:1 1 160px;min-width:0}.tree-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex-shrink:0;width:220px}.tree-row.completed-group{background:var(--color-surface-alt);min-height:34px}.tree-row.completed-group .title{color:var(--color-muted);font-size:12px}.amendment-form{display:flex;flex-direction:column;gap:10px;margin-top:14px;padding-top:14px;border-top:1px solid var(--color-hairline);align-items:stretch}.amendment-form .btn{align-self:flex-start}.detail-summary{display:flex;gap:28px;flex-wrap:wrap}.detail-item{display:flex;flex-direction:column;gap:2px;font-size:13px}.task-editor{display:flex;flex-direction:column;gap:12px;padding:4px 0 10px}.task-editor .btn{align-self:flex-start}.assignee-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:4px 12px}.move-row{display:flex;flex-direction:column;gap:6px;border-top:1px solid var(--color-divider);padding-top:10px}.task-editor-row>td{background:var(--color-surface-alt)}@media(max-width:1000px){.tree-actions{width:auto}}.report-layout{display:flex;gap:16px;align-items:flex-start;min-height:0}.report-rail{width:248px;flex-shrink:0;background:var(--color-surface);border:1px solid var(--color-hairline);border-radius:var(--radius-card);padding:12px 10px;display:flex;flex-direction:column;gap:6px}.rail-head{font-family:var(--font-head);font-size:11.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--color-muted);padding:0 6px 2px}.report-item{display:flex;align-items:flex-start;gap:9px;width:100%;text-align:left;padding:8px;background:none;border:none;border-left:3px solid transparent;border-radius:0 var(--radius-control) var(--radius-control) 0;color:var(--color-body);font:inherit;cursor:pointer}.report-item:hover{background:var(--color-surface-alt)}.report-item.active{background:var(--color-accent-soft);border-left-color:var(--color-accent);color:var(--color-accent)}.report-item svg{flex-shrink:0;margin-top:2px}.report-item-text{display:flex;flex-direction:column;gap:1px;min-width:0}.report-item-name{font-family:var(--font-head);font-size:13px;font-weight:500}.report-item.active .report-item-name{font-weight:600}.rail-note{border-top:1px solid var(--color-divider);padding:10px 6px 0}.report-panel{flex-grow:1;min-width:0;display:flex;flex-direction:column;gap:12px}.report-params{display:flex;align-items:flex-end;flex-wrap:wrap;gap:12px;padding:4px 0 2px}.report-params .field{width:180px}.report-run{display:flex;align-items:center;gap:8px}.report-periods{display:flex;flex-direction:column;gap:8px;padding:4px 0 6px}.report-period{display:flex;align-items:center;gap:12px;border:1px solid var(--color-hairline);border-radius:var(--radius-control);padding:8px 10px}.period-range{font-size:12.5px;color:var(--color-text)}.report-result{display:flex;flex-direction:column;gap:12px;min-width:0}.report-contract{display:flex;align-items:flex-start;gap:6px;padding-bottom:4px}.report-contract svg{flex-shrink:0;margin-top:2px;color:var(--color-accent)}.report-count{padding:10px 16px;border-bottom:1px solid var(--color-divider);font-family:var(--font-mono);font-size:12.5px;color:var(--color-text)}.table tbody tr.group-row>th,.table tbody tr.group-row>td{background:var(--color-surface-alt);font-family:var(--font-head);font-size:11.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--color-body);text-align:left}.table tbody tr.group-row>td{font-family:var(--font-mono);font-size:12.5px;letter-spacing:normal;text-transform:none;text-align:right}.over{color:var(--color-danger-text);font-weight:600}@media(max-width:1000px){.report-layout{flex-direction:column}.report-rail{width:100%}}
