.ui{--ui-text: #1c2230;--ui-muted: #667085;--ui-border: #e3e6eb;--ui-surface: #ffffff;--ui-subtle: #f6f7f9;--ui-accent: #2f5bd3;--ui-accent-hover: #2449b0;--ui-accent-text: #ffffff;--ui-accent-bg: #eef2fc;--ui-accent-border: #c7d4f5;--ui-danger: #b42318;--ui-danger-bg: #fdecea;--ui-warning: #93580a;--ui-warning-bg: #fef4e2;--ui-success: #1f7a4d;--ui-success-bg: #e6f4ec;--ui-success-border: #bfe0cd;--ui-radius: 8px;--ui-sans: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--ui-mono: ui-monospace, "SF Mono", SFMono-Regular, Menlo, Consolas, monospace;color:var(--ui-text);font-family:var(--ui-sans);font-size:14px;line-height:1.45;max-width:960px}.ui .ui{max-width:none}.ui h1{font-size:22px;margin:0 0 12px}.ui h2{font-size:18px;margin:32px 0 12px}.ui h3{font-size:15px;margin:28px 0 10px}.ui-muted,.ui-note{color:var(--ui-muted)}.ui-note{margin:8px 0}.ui-alert{color:var(--ui-danger);background:var(--ui-danger-bg);border-radius:var(--ui-radius);padding:8px 12px}.ui-page--tall-end{padding-bottom:320px}.ui-back{margin:0 0 8px}.ui-back a{color:var(--ui-accent);text-decoration:none}.ui-back a:hover{text-decoration:underline}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.ui-button{font:inherit;font-weight:500;color:var(--ui-text);background:var(--ui-surface);border:1px solid var(--ui-border);border-radius:6px;padding:6px 12px;cursor:pointer}.ui-button:hover:not(:disabled){background:var(--ui-subtle)}.ui-button:disabled{opacity:.5;cursor:not-allowed}.ui-button--primary{color:var(--ui-accent-text);background:var(--ui-accent);border-color:var(--ui-accent)}.ui-button--primary:hover:not(:disabled){background:var(--ui-accent-hover)}.ui-button--quiet{border-color:transparent;background:transparent;color:var(--ui-muted);padding:4px 8px}.ui-button--quiet:hover:not(:disabled){color:var(--ui-text)}.ui-button--danger:hover:not(:disabled){color:var(--ui-danger);background:var(--ui-danger-bg)}.ui-button-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}.ui-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px}.ui-badges,.ui-bar__actions{display:flex;flex-wrap:wrap;gap:8px}.ui-badge{display:inline-flex;align-items:center;gap:8px;border:1px solid var(--ui-border);border-radius:999px;padding:4px 12px;background:var(--ui-surface)}.ui-badge__title{font-weight:600}.ui-badge__detail{font-size:12px;color:var(--ui-muted)}.ui-badge--accent{border-color:var(--ui-accent-border);background:var(--ui-accent-bg)}.ui-badge--muted{background:var(--ui-subtle)}.ui-badge.is-locked .ui-badge__detail:before{content:"🔒 "}.ui-badge--success{border-color:var(--ui-success-border);background:var(--ui-success-bg)}.ui-badge--success .ui-badge__title{color:var(--ui-success)}.ui-badge--empty{color:var(--ui-muted);border-style:dashed}.ui-pill{display:inline-block;font-family:var(--ui-sans);font-size:12px;font-weight:500;border-radius:999px;padding:1px 8px;white-space:nowrap}.ui-pill--neutral{color:var(--ui-muted);background:var(--ui-subtle);border:1px solid var(--ui-border)}.ui-pill--accent{color:var(--ui-accent);background:var(--ui-accent-bg)}.ui-pill--danger{color:var(--ui-danger);background:var(--ui-danger-bg)}.ui-pill--warning{color:var(--ui-warning);background:var(--ui-warning-bg)}.rate-marker{display:inline-block;margin-left:6px;font-weight:600;color:var(--ui-text);cursor:help}.rate-marker--off{color:var(--ui-warning)}.ui-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin:16px 0 8px}.ui-card{border:1px solid var(--ui-border);border-radius:var(--ui-radius);padding:12px 16px;background:var(--ui-surface)}.ui-card__label{font-size:12px;color:var(--ui-muted);text-transform:uppercase;letter-spacing:.04em}.ui-card__value{font-family:var(--ui-mono);font-variant-numeric:tabular-nums;font-size:20px;font-weight:600;margin-top:4px}.ui-card__hint{font-size:12px;color:var(--ui-muted)}.ui-facts{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px 24px;margin:12px 0 0;padding:16px;border:1px solid var(--ui-border);border-radius:var(--ui-radius);background:var(--ui-surface)}.ui-facts dt{font-size:12px;color:var(--ui-muted);text-transform:uppercase;letter-spacing:.04em}.ui-facts dd{margin:2px 0 0;font-weight:500}.ui-facts dd.num{font-family:var(--ui-mono);font-variant-numeric:tabular-nums}.ui label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:500;color:var(--ui-muted)}.ui input,.ui select{font:inherit;font-size:14px;color:var(--ui-text);background:var(--ui-surface);border:1px solid var(--ui-border);border-radius:6px;padding:6px 8px;min-width:0}.ui input:focus,.ui select:focus{outline:2px solid var(--ui-accent);outline-offset:-1px}.ui input[type=checkbox]{width:16px;height:16px;accent-color:var(--ui-accent)}.ui label small{font-weight:400}.ui-panel{border:1px solid var(--ui-border);border-radius:var(--ui-radius);padding:4px 16px 16px;margin-top:16px;background:var(--ui-subtle)}.ui .ui-panel h2,.ui .ui-panel h3{font-size:15px;margin:12px 0 10px}.ui-fields{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}.ui-panel .ui-fields{margin-bottom:12px}.ui-fields__wide{grid-column:span 2}.ui-fields__actions{grid-column:1 / -1;display:flex;gap:8px}.ui-toolbar{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:12px}.ui-table-wrap{overflow-x:auto;border:1px solid var(--ui-border);border-radius:var(--ui-radius);background:var(--ui-surface)}.ui-table{width:100%;border-collapse:collapse}.ui-table th,.ui-table td{padding:10px 14px;text-align:left;vertical-align:top;border-bottom:1px solid var(--ui-border)}.ui-table tbody tr:last-child>*{border-bottom:none}.ui-table tfoot tr:first-child>*{border-top:2px solid var(--ui-border)}.ui-table thead th{font-size:12px;font-weight:600;color:var(--ui-muted);text-transform:uppercase;letter-spacing:.04em;background:var(--ui-subtle);white-space:nowrap}.ui-table .num{text-align:right;font-family:var(--ui-mono);font-variant-numeric:tabular-nums;white-space:nowrap}.ui-table .num .ui-muted{font-family:var(--ui-sans)}.ui-table td.num input{width:7em;text-align:right;font-family:var(--ui-mono);font-variant-numeric:tabular-nums}.ui-table td.num input:disabled{color:var(--ui-muted);background:var(--ui-subtle)}.ui-table tbody tr:not(.ui-group):not(.ui-total):hover{background:#fafbfc}.ui-sub{font-size:12px;color:var(--ui-muted);margin-top:2px}.ui-row-actions{text-align:right;white-space:nowrap;width:1%}.ui-table td.ui-row-actions{text-align:right}.ui-group th{font-weight:600;background:var(--ui-subtle);border-top:1px solid var(--ui-border)}.ui-total th{font-weight:500;color:var(--ui-muted)}.ui-total--sub td{color:var(--ui-muted)}.ui-total--grand th,.ui-total--grand td{font-weight:700;color:var(--ui-text);border-bottom:none}.is-editing>td{background:#f4f7fe}@media (max-width: 640px){.ui-card__value{font-size:18px}.ui-fields__wide{grid-column:1 / -1}.ui-table th,.ui-table td{padding:8px 10px}}.budget-item__service{font-weight:500}.budget-item__role{font-size:13px;color:var(--ui-muted)}.budget-item__meta{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 8px;margin-top:4px;font-size:12px;color:var(--ui-muted)}.budget-item__bucket{border:1px solid var(--ui-border);border-radius:4px;padding:0 6px;background:var(--ui-subtle);white-space:nowrap}.budget-item__description{max-width:48ch}.budget-row{cursor:pointer}.budget-item__head{display:flex;align-items:flex-start;gap:6px}.budget-toggle{flex:none;width:20px;height:20px;margin:0 0 0 -6px;padding:0;font-size:11px;line-height:20px;color:var(--ui-muted);background:none;border:none;border-radius:4px;cursor:pointer;transition:transform .15s ease}.budget-toggle:hover{color:var(--ui-text);background:var(--ui-subtle)}.budget-toggle:focus-visible{outline:2px solid var(--ui-accent)}.budget-toggle[aria-expanded=true]{transform:rotate(90deg)}.ui-table tr.budget-row.is-open>td{border-bottom-color:transparent}.ui-table tr.budget-detail>td{padding:0 14px 14px 40px;background:var(--ui-surface)}.ui-table tbody tr.budget-detail:hover{background:none}.budget-detail__table{width:auto;min-width:360px;border-collapse:collapse;font-size:13px;border:1px solid var(--ui-border);border-radius:6px;background:var(--ui-subtle)}.ui-table .budget-detail__table th,.ui-table .budget-detail__table td{padding:4px 12px;border-bottom:1px solid var(--ui-border);text-transform:none;letter-spacing:normal;background:none}.ui-table .budget-detail__table thead th{font-size:12px;font-weight:600;color:var(--ui-text)}.ui-table .budget-detail__table tbody th{font-weight:500;color:var(--ui-muted)}.ui-table .budget-detail__table tbody tr:last-child>*{border-bottom:none}.ui-table .budget-detail__table tbody tr:hover{background:none}.ui-table .budget-detail__table td.is-changed{font-weight:600;background:var(--ui-warning-bg)}.budget-detail__table td:not(.num){max-width:36ch}.budget-detail__body{display:flex;flex-wrap:wrap;align-items:flex-start;gap:12px 16px}.ui-table .budget-detail__table tfoot th,.ui-table .budget-detail__table tfoot td{font-weight:600;color:var(--ui-text);border-top:1px solid var(--ui-border);border-bottom:none}.budget-burn--near{color:var(--ui-warning);font-weight:600}.budget-burn--over{color:var(--ui-danger);font-weight:600}.budget-legend{display:flex;flex-wrap:wrap;gap:4px 20px;list-style:none;padding:0;margin:10px 0 0;font-size:12px;color:var(--ui-muted)}.budget-legend .rate-marker{margin-left:0;cursor:default}.budget-legend__hint{font-style:italic}.budget-include,.ui-table td.budget-include{width:1%;text-align:center}.is-excluded .budget-item,.is-excluded td.num:nth-child(3){opacity:.55}.actuals-week{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin:16px 0 12px}.actuals-week__label{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 10px;min-width:14em}.actuals-week__label strong{font-size:16px}.ui-table tr.is-changed td.num input{border-color:var(--ui-accent);background:var(--ui-accent-bg)}.ui-table td.num input[aria-invalid=true]{border-color:var(--ui-danger);background:var(--ui-danger-bg)}.ui-table-wrap.is-loading{opacity:.6}.resources-name{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;font-weight:500}.ui .resources-suggest{padding:0;font-size:12px;color:var(--ui-accent);text-align:left}.ui .resources-suggest:hover:not(:disabled){background:none;text-decoration:underline}.heatmap{--heatmap-person-width: 180px;--heatmap-total-width: 72px;--heatmap-week-width: 52px;--heatmap-outside: repeating-linear-gradient( 135deg, transparent 0 4px, rgba(102, 112, 133, .12) 4px 6px );overflow-x:auto;border:1px solid var(--ui-border);border-radius:var(--ui-radius);background:var(--ui-surface);scroll-padding-left:var(--heatmap-person-width);scroll-padding-right:var(--heatmap-total-width)}.heatmap__table{border-collapse:separate;border-spacing:0;font-variant-numeric:tabular-nums}:where(.heatmap__table) th,:where(.heatmap__table) td{border-right:1px solid var(--ui-border);border-bottom:1px solid var(--ui-border);padding:0}.heatmap__person{position:sticky;left:0;z-index:2;width:var(--heatmap-person-width);min-width:var(--heatmap-person-width);max-width:var(--heatmap-person-width);padding:6px 12px;text-align:left;font-weight:400;background:var(--ui-surface);box-shadow:1px 0 0 var(--ui-border)}.heatmap__total{position:sticky;right:0;z-index:2;width:var(--heatmap-total-width);min-width:var(--heatmap-total-width);padding:6px 10px;text-align:right;font-family:var(--ui-mono);font-weight:600;background:var(--ui-subtle);box-shadow:-1px 0 0 var(--ui-border)}.heatmap__corner{z-index:3;font-size:12px;font-weight:600;color:var(--ui-muted);text-transform:uppercase;letter-spacing:.04em;vertical-align:bottom;background:var(--ui-subtle)}.heatmap__name{font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.heatmap__role{font-size:12px;color:var(--ui-muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.heatmap__month{padding:4px 6px;font-size:12px;font-weight:600;text-align:left;white-space:nowrap;background:var(--ui-subtle)}.heatmap__week{width:var(--heatmap-week-width);min-width:var(--heatmap-week-width);padding:4px 0;font-family:var(--ui-mono);font-size:12px;font-weight:500;color:var(--ui-muted);text-align:center;background:var(--ui-subtle)}.heatmap__week.is-current{color:var(--ui-accent-text);background:var(--ui-accent)}.heatmap__week.is-outside{background:var(--heatmap-outside),var(--ui-subtle)}.heatmap__cell{position:relative;background:var(--ui-surface)}.heatmap__cell input{display:block;width:100%;height:34px;padding:0 6px;border:none;border-radius:0;background:transparent;font-family:var(--ui-mono);font-size:13px;text-align:center;color:inherit}.heatmap__cell input:focus{outline:2px solid var(--ui-accent);outline-offset:-2px;background:var(--ui-surface)}.heatmap__cell.is-current{box-shadow:inset 2px 0 0 var(--ui-accent-border),inset -2px 0 0 var(--ui-accent-border)}.heatmap__cell.is-outside{background:var(--heatmap-outside),var(--ui-surface)}.heatmap__cell[data-level="1"],.heatmap__swatch[data-level="1"]{background-color:#2f5bd314}.heatmap__cell[data-level="2"],.heatmap__swatch[data-level="2"]{background-color:#2f5bd32e}.heatmap__cell[data-level="3"],.heatmap__swatch[data-level="3"]{background-color:#2f5bd34d}.heatmap__cell[data-level="4"],.heatmap__swatch[data-level="4"]{background-color:#2f5bd36b}.heatmap__cell[data-level=over],.heatmap__swatch[data-level=over]{background-color:#f9d9a3}.heatmap__cell[data-level=over] input{color:var(--ui-warning);font-weight:700}.heatmap__cell.is-saving input{color:var(--ui-muted)}.heatmap__cell.is-error input{outline:2px solid var(--ui-danger);outline-offset:-2px;background:var(--ui-danger-bg);color:var(--ui-danger)}.heatmap__table tfoot th,.heatmap__table tfoot td{border-top:2px solid var(--ui-border);border-bottom:none;font-weight:600}.heatmap__weektotal{padding:6px 2px;font-family:var(--ui-mono);font-size:12px;text-align:center;background:var(--ui-subtle)}.heatmap__weektotal.is-current{background:var(--ui-accent-bg)}.heatmap__weektotal.is-outside{background:var(--heatmap-outside),var(--ui-subtle)}.heatmap__legend{display:flex;flex-wrap:wrap;align-items:center;gap:6px 16px;list-style:none;padding:0;margin:10px 0 0;font-size:12px;color:var(--ui-muted)}.heatmap__legend li{display:flex;align-items:center;gap:6px}.heatmap__swatch{display:inline-block;width:14px;height:14px;border:1px solid var(--ui-border);border-radius:3px}.heatmap__swatch--outside{--heatmap-outside: repeating-linear-gradient( 135deg, transparent 0 4px, rgba(102, 112, 133, .12) 4px 6px );background:var(--heatmap-outside),var(--ui-surface)}.heatmap__legend-hint{font-style:italic}@media (max-width: 640px){.heatmap{--heatmap-person-width: 132px;--heatmap-total-width: 60px}}
