/* 06-components/_gantt.css — .c-gantt: resource rows against a time axis. Planning module; first cut.
   Set --gantt-cols (number of day columns) and --gantt-col (min width) on the element. */
.c-gantt { --gantt-cols: 14; --gantt-col: 3.5rem; --gantt-label: 9rem; background: var(--surface); border: var(--stroke) solid var(--rule); border-radius: var(--radius-md); overflow-x: auto; }
.c-gantt__grid { display: grid; grid-template-columns: var(--gantt-label) repeat(var(--gantt-cols), minmax(var(--gantt-col), 1fr)); min-width: max-content; }
.c-gantt__axis { position: sticky; top: 0; z-index: var(--z-sticky); padding: var(--space-xs) var(--space-2xs); background: var(--surface-sunken); border-bottom: var(--stroke) solid var(--rule); border-inline-start: var(--stroke) solid var(--rule); font-family: var(--font-mono); font-size: var(--text-xs); color: var(--ink-muted); text-align: center; }
.c-gantt__axis.is-today { color: var(--accent-ink); font-weight: var(--weight-medium); }
.c-gantt__axis.is-weekend { color: var(--ink-faint); }
.c-gantt__corner { position: sticky; inset-inline-start: 0; z-index: calc(var(--z-sticky) + 1); background: var(--surface-sunken); border-bottom: var(--stroke) solid var(--rule); }
.c-gantt__res { position: sticky; inset-inline-start: 0; z-index: 1; display: flex; flex-direction: column; justify-content: center; padding: var(--space-xs) var(--space-sm); background: var(--surface); border-bottom: var(--stroke) solid var(--rule); font-weight: var(--weight-medium); min-height: 3rem; }
.c-gantt__res small { font-family: var(--font-mono); font-size: var(--text-xs); color: var(--ink-faint); font-weight: var(--weight-regular); }
.c-gantt__lane { grid-column: 2 / -1; position: relative; display: grid; grid-template-columns: repeat(var(--gantt-cols), minmax(var(--gantt-col), 1fr)); border-bottom: var(--stroke) solid var(--rule); min-height: 3rem; background-image: linear-gradient(to right, var(--rule) 1px, transparent 1px); background-size: calc(100% / var(--gantt-cols)) 100%; }
.c-gantt__today { position: absolute; inset-block: 0; inset-inline-start: calc((var(--today, 0) + 0.5) * 100% / var(--gantt-cols)); width: 2px; background: var(--accent); opacity: 0.7; pointer-events: none; }
.c-gantt__bar { grid-column: var(--start, 1) / span var(--len, 1); align-self: center; margin-inline: 2px; position: relative; padding: var(--space-2xs) var(--space-xs); padding-inline-start: calc(var(--space-xs) + var(--stroke-edge)); background: var(--band-fill, var(--surface-sunken)); border: var(--stroke) solid var(--band-line, var(--rule)); border-radius: var(--radius-sm); font-size: var(--text-xs); color: var(--ink); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.c-gantt__bar::before { content: ""; position: absolute; inset-block: -1px; inset-inline-start: -1px; width: var(--stroke-edge); background: var(--band-dot, var(--rule-strong)); }
.c-gantt__bar b { font-weight: var(--weight-medium); }
.c-gantt__bar small { font-family: var(--font-mono); color: var(--band-ink, var(--ink-muted)); margin-inline-start: var(--space-2xs); }
