/* Shared production/project timeline geometry and live date feedback. */
.gantt-band.editable,.project-stage-band.editable{touch-action:pan-y}.timeline-dragging{z-index:9!important;cursor:grabbing!important;box-shadow:0 4px 14px #0002;filter:brightness(1.06)}
.timeline-day-number{display:block;opacity:var(--day-opacity,var(--day-base,1));transform:translateY(calc(var(--day-wave,0)* -4px)) scale(calc(1 + var(--day-wave,0)* .18));transition:opacity 160ms ease,transform 160ms ease;color:inherit;will-change:opacity,transform}
.gantt-day-row:has(.timeline-day-number){padding-top:8px;min-height:20px}.gantt-day-lbl:has(.timeline-day-number){font-size:11px;line-height:16px}.timeline-date-preview{position:fixed;z-index:24000;pointer-events:none;display:flex;align-items:center;gap:18px;max-width:calc(100vw - 16px);padding:10px 14px;box-sizing:border-box;border-radius:12px;border:1px solid color-mix(in srgb,var(--accent) 28%,var(--border));background:var(--bg2);color:var(--text);box-shadow:0 8px 30px #0002;animation:timeline-date-in 130ms ease-out}.timeline-date-preview>span{display:grid;gap:3px}.timeline-date-preview small{font-size:10px;color:var(--text2);text-transform:uppercase;letter-spacing:.05em}.timeline-date-preview strong{font-size:12px;white-space:nowrap;font-variant-numeric:tabular-nums}.timeline-date-preview>span:nth-child(2){color:var(--accent)}
.project-timeline-scroll{overflow:auto;max-height:400px;padding:10px 0 16px;border:1px solid var(--border);border-radius:10px;background:var(--bg2)}.project-timeline-scroll .gantt-inner{min-width:100%;padding-right:24px}.project-timeline-scroll .gantt-row{height:44px;margin-bottom:8px}.project-timeline-scroll .gantt-row-label{padding-left:10px;box-sizing:border-box;height:44px;font-size:12px}.project-timeline-scroll .gantt-track{height:36px;overflow:hidden;background:repeating-linear-gradient(90deg,var(--border) 0 1px,var(--bg3) 1px 22px)}.project-timeline-scroll .project-stage-band{top:4px;bottom:4px;height:28px;min-height:0!important;min-width:0!important;border-radius:5px;padding:0 7px;font-size:11px}.project-timeline-scroll .project-stage-band:not(.editable){cursor:pointer}.project-timeline-scroll .gband-handle{width:9px}.project-timeline-scroll .project-stage-band:focus-visible{outline:2px solid var(--text);outline-offset:-2px}.project-timeline-scroll .gantt-month-lbl{font-size:11px}.project-timeline-scroll .gantt-month-ruler-inner{height:20px}.project-planning-timeline .planning-timeline-head{align-items:flex-start;margin-bottom:14px;line-height:1.6}.project-planning-timeline .planning-timeline-head strong{font-size:15px}
@keyframes timeline-date-in{from{opacity:0;transform:translateY(5px)}to{opacity:1;transform:translateY(0)}}
@media(max-width:700px){.project-timeline-scroll .gantt-row-label{width:105px}.project-timeline-scroll .gantt-day-row{padding-left:105px}.project-timeline-scroll .gantt-month-ruler{padding-left:105px}.timeline-date-preview{gap:10px;padding:8px 10px}.timeline-date-preview strong{font-size:11px}.project-timeline-scroll{max-height:350px}}
@media(prefers-reduced-motion:reduce){.timeline-day-number{transition:none;transform:none}.timeline-date-preview{animation:none}.gantt-band.gband-fly{transition:none!important}}

.gantt-band .gband-label{color:var(--text)}
/* Timeline widths include padding; sticky labels mask the complete row. */
#ganttBody .gantt-row{isolation:isolate;align-items:stretch}
#ganttBody .gantt-row-label{align-self:stretch;box-sizing:border-box;z-index:12;height:auto;padding-left:8px;background:var(--bg2);border-right:1px solid var(--border);box-shadow:6px 0 0 var(--bg2)}
#ganttBody .gantt-track{border-radius:4px}
.gantt-band{box-sizing:border-box;min-width:0}.gband-label{min-width:0;max-width:100%;box-sizing:border-box}.gband-label svg{flex-shrink:0}
#ganttBody{padding-left:0}
