export const LANE_MIN_HEIGHT = 150;
export const LANE_GAP = 32;
/** Minimum width of one phase slot within a calendar day column. */
export const COLUMN_WIDTH_MIN = 320;
/** @deprecated use COLUMN_WIDTH_MIN — kept for imports that expect COLUMN_WIDTH */
export const COLUMN_WIDTH = COLUMN_WIDTH_MIN;
export const PHASE_LABEL_WIDTH = 112;
export const HEADER_HEIGHT = 40;
/** Trace event card width — sized for PO codes and supplier names. */
export const NODE_WIDTH = 268;
export const NODE_WIDTH_BRANCH = 220;
/** Fixed trace event card height — layout spacing must match rendered Paper height.
 * Sized for densest cards (MATERIAL_PICK / JO_OUT with item, statuses, timestamp). */
export const NODE_HEIGHT = 280;
export const NODE_GAP = 16;
/** React Flow canvas height in the life-cycle graph panel. */
export const VIEWPORT_HEIGHT = 720;
/** Initial fitView will not zoom out below this (keeps nodes readable). */
export const FIT_VIEW_MIN_ZOOM = 0.55;
export const FIT_VIEW_MAX_ZOOM = 1.35;

/**
 * Min DO_OUT nodes in one day column before collapsing into a group box.
 * Higher than pick groups: individual DO tickets stay readable until the column
 * gets dense (≥3 same day + warehouse).
 */
export const DO_GROUP_MIN_SIZE = 3;
/**
 * Min MATERIAL_PICK lines sharing a pick order before collapsing into a group box.
 * Intentional asymmetry vs DO_GROUP_MIN_SIZE: warehouse users think in pick-order
 * batches, so even a single material line sits inside its pick-order box.
 */
export const PICK_GROUP_MIN_SIZE = 1;
export const DO_GROUP_PAD = 12;
export const DO_GROUP_HEADER = 32;
export const DO_GROUP_INNER_COLS_MAX = 3;
/** Card width used inside a DO group grid (full-size, not branch compact). */
export const DO_GROUP_CHILD_WIDTH = NODE_WIDTH;
