/* Project board: owner acceptance stays separate from execution status. */
.tabbar .tab { background:transparent; font-weight:500; }
.tabbar .tab.on { background:var(--bg); font-weight:600; }
.tabbar .tab:hover { filter:none; color:var(--text); }
#kanban-pane.on { display:grid; grid-template-rows:auto auto minmax(0,1fr); gap:20px; padding:26px; overflow:auto; min-width:0; }
#left:has(#history-pane.on) > .chat-footer,#left:has(#history-pane.on) > #work-summary,#left:has(#kanban-pane.on) > .chat-footer,#left:has(#kanban-pane.on) > #work-summary { display:none; }
.kanban-heading { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:start; gap:18px; }
.kanban-heading h1 { margin:5px 0 8px; font-size:25px; letter-spacing:-.04em; line-height:1.2; }
.kanban-eyebrow { margin:0; color:var(--muted); font-size:10px; letter-spacing:.14em; }
.kanban-intro { color:var(--muted); font-size:12px; line-height:1.65; margin:0; max-width:600px; }
.kanban-toolbar { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:12px; }
.kanban-toolbar p { margin:0; font-size:11px; color:var(--muted); overflow-wrap:anywhere; }
.kanban-board { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); align-items:start; gap:12px; min-width:0; }
.kanban-lane { min-width:0; background:var(--panel); border:1px solid var(--line); border-radius:12px; padding:12px; }
.kanban-lane-heading { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:8px; margin-bottom:14px; }
.kanban-lane-heading h2 { margin:0; font-size:12px; letter-spacing:0; text-transform:none; color:var(--text); }
.kanban-count { font-size:11px; color:var(--muted); font-variant-numeric:tabular-nums; }
.kanban-stack { display:grid; gap:10px; }
.kanban-empty { padding:12px 2px; margin:0; color:var(--muted); font-size:11px; line-height:1.7; }
.kanban-card { min-width:0; display:grid; gap:10px; padding:13px; background:var(--bg); border:1px solid var(--line); border-radius:8px; }
.kanban-card-title { width:100%; padding:0; background:none; border:0; border-radius:0; color:var(--text); font-size:13px; line-height:1.5; text-align:left; font-weight:650; white-space:normal; overflow-wrap:anywhere; }
.kanban-card-title:hover { color:var(--accent); background:none; filter:none; }
.kanban-card-description { margin:0; color:var(--muted); font-size:11px; line-height:1.7; overflow-wrap:anywhere; white-space:pre-wrap; }
.kanban-card-meta { margin:0; color:var(--muted); font-size:10px; overflow-wrap:anywhere; }
.kanban-task-state { margin:0; font-size:10px; line-height:1.6; overflow-wrap:anywhere; }
.kanban-task-state.is-attention { color:#c5a66c; }.kanban-task-state.is-failed { color:var(--err); }
html[data-theme="light"] .kanban-task-state.is-attention { color:#806016; }
.kanban-card-actions { display:grid; grid-auto-flow:column; grid-auto-columns:max-content; justify-content:start; gap:8px; }
.kanban-card-actions button { padding:6px 8px; font-size:10px; min-height:32px; }
.kanban-dialog { width:min(560px,calc(100vw - 28px)); max-height:calc(100dvh - 28px); padding:24px; overflow:auto; }
.kanban-dialog h2 { margin:0; font-size:20px; text-transform:none; letter-spacing:-.03em; color:var(--text); }
.kanban-dialog > .kanban-intro { margin:12px 0 20px; }
#kanban-form { display:grid; gap:9px; min-width:0; }
#kanban-form label { font-size:11px; color:var(--muted); margin-top:7px; }
#kanban-form :is(input,textarea,select) { width:100%; min-width:0; }
#kanban-form textarea { resize:vertical; }
.kanban-editor-actions { display:grid; grid-template-columns:repeat(3,max-content); gap:8px; margin-top:14px; }
.kanban-editor-actions [hidden],.kanban-conflict[hidden] { display:none; }
.kanban-form-status { min-height:18px; font-size:12px; line-height:1.65; overflow-wrap:anywhere; margin:16px 0 0; }
.kanban-conflict { border:1px solid var(--line); padding:12px; border-radius:8px; font-size:12px; }
.kanban-conflict p { color:var(--muted); line-height:1.65; }.kanban-conflict pre { white-space:pre-wrap; max-height:180px; overflow:auto; overflow-wrap:anywhere; font-size:11px; }
@media(max-width:1100px) and (min-width:701px) { .kanban-board { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media(max-width:700px) {
  #kanban-pane.on { padding:20px 14px; gap:18px; }.kanban-heading { grid-template-columns:minmax(0,1fr); gap:14px; }.kanban-heading > button { justify-self:start; }
  .kanban-heading h1 { font-size:23px; }.kanban-board { grid-template-columns:minmax(0,1fr); }.kanban-lane { padding:14px; }
  .kanban-card-actions button { min-height:44px; }.kanban-dialog { padding:20px 16px; }.kanban-dialog :is(input,textarea,select) { font-size:16px; }
  .kanban-editor-actions { grid-template-columns:repeat(2,minmax(0,1fr)); }.kanban-editor-actions button { min-height:44px; padding-left:8px; padding-right:8px; }
}

#history-pane.on { display:block; overflow:auto; padding:26px; min-width:0; }
.history-content { width:100%; max-width:850px; margin:0 auto; }
.history-content h2 { margin:0; font-size:25px; text-transform:none; letter-spacing:-.04em; color:var(--text); }
.history-content > label { display:block; font-size:11px; color:var(--muted); margin:20px 0 8px; }
.history-content > :is(input,select) { width:100%; max-width:100%; }
.history-content .panel-actions { margin-top:20px; }
.history-content .dialog-heading { margin-bottom:24px; }
@media(max-width:700px) { #history-pane.on { padding:20px 14px; } .history-content > :is(input,select) { font-size:16px; } }

/* Shared controls retain application surfaces after leaving the history dialog. */
.kanban-dialog { background:var(--panel); color:var(--text); border:1px solid var(--line); border-radius:18px; box-shadow:0 24px 80px #0006; }
.kanban-dialog::backdrop { background:#050609bc; }
.kanban-dialog :is(input,select,textarea),.history-content > :is(input,select) { min-height:44px; padding:10px 12px; border:1px solid var(--line); border-radius:9px; background:var(--panel2); color:var(--text); font:inherit; font-size:13px; }
.kanban-dialog :is(input,select,textarea):focus-visible,.history-content > :is(input,select):focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
#shell:has(#kanban-pane.on) #workspace-toggle,#shell:has(#history-pane.on) #workspace-toggle { display:none; }
#shell:has(#kanban-pane.on) #builder-main,#shell:has(#history-pane.on) #builder-main { grid-template-columns:minmax(0,1fr) 0 0; }
@media(max-width:700px) { .kanban-dialog :is(input,select,textarea),.history-content > :is(input,select) { font-size:16px; } }

/* Owner-controlled movement and feedback; execution remains separate. */
.kanban-filters,.kanban-feedback-actions { display:grid; grid-template-columns:repeat(2,minmax(0,max-content)); gap:8px; }
.kanban-filters button[aria-pressed="true"] { border-color:var(--accent); box-shadow:inset 0 -2px var(--accent); }
.kanban-drag-handle { justify-self:end; padding:2px 5px; color:var(--muted); font-size:10px; cursor:grab; user-select:none; }
.kanban-card.is-dragging { opacity:.45; }.kanban-lane.kanban-drop-active { border-color:var(--accent); box-shadow:inset 0 0 0 2px var(--accent); }
.kanban-needs-you { justify-self:start; padding:3px 7px; border:1px solid var(--line); border-radius:6px; color:var(--warn); font-size:10px; }
.kanban-card-actions { grid-auto-flow:row; grid-template-columns:repeat(auto-fit,minmax(min(100%,70px),max-content)); }
.kanban-move-menu { position:relative; font-size:11px; }.kanban-move-menu>summary { cursor:pointer; list-style:none; padding:6px 9px; min-height:32px; border:1px solid var(--line); border-radius:8px; background:var(--panel2); color:var(--text); }
.kanban-move-menu>summary:focus-visible,.kanban-feedback-actions button:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
.kanban-move-options { position:absolute; z-index:8; right:0; top:calc(100% + 4px); display:grid; gap:4px; width:160px; max-width:75vw; padding:6px; border:1px solid var(--line); border-radius:9px; background:var(--panel); box-shadow:0 8px 24px #0004; }
.kanban-move-options button { text-align:left; width:100%; }.kanban-move-options button:disabled { opacity:.45; }
#kanban-feedback-section,#kanban-acceptance { border-top:1px solid var(--line); padding-top:16px; margin-top:14px; display:grid; gap:10px; min-width:0; }
#kanban-feedback-section[hidden],#kanban-acceptance[hidden] { display:none; }#kanban-feedback-section h3 { margin:0;font-size:14px; }
#kanban-form .kanban-check { display:grid;grid-template-columns:18px minmax(0,1fr);gap:8px;align-items:start;color:var(--text);font-size:12px;line-height:1.5; }
#kanban-form .kanban-check input { width:16px;min-height:16px;height:16px;margin:2px 0; }
@media(max-width:700px){.kanban-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.kanban-move-menu>summary{min-height:44px;padding:11px 9px}.kanban-feedback-actions{grid-template-columns:repeat(2,minmax(0,1fr))}.kanban-feedback-actions button{min-height:44px}.kanban-move-options{left:0;right:auto}}

@media (max-width:600px) { .kanban-toolbar { grid-template-columns:minmax(0,1fr); } .kanban-filters { justify-content:start; } }
.kanban-heading-actions { display:flex; flex-wrap:wrap; gap:8px; justify-content:flex-end; }
.kanban-card-progress { margin:0; font-size:11px; font-weight:650; color:var(--accent); }
.kanban-card-labels { margin:0; font-size:10px; color:var(--muted); overflow-wrap:anywhere; }
.subproject-card-data { display:grid; gap:10px; margin-top:16px; padding-top:16px; border-top:1px solid var(--line); }
.subproject-card-data[hidden] { display:none; }
.kanban-detail-heading,.kanban-inline-add { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:8px; }
.kanban-detail-heading h3,.subproject-card-data > h3 { margin:0; font-size:13px; }
.kanban-subtasks,.kanban-comments { display:grid; gap:7px; max-height:230px; overflow:auto; }
.kanban-subtask { display:grid; grid-template-columns:auto minmax(0,1fr); gap:9px; align-items:start; padding:8px; border:1px solid var(--line); border-radius:8px; font-size:12px; }
.kanban-subtask input { width:auto!important; min-height:0!important; margin-top:2px; }
.kanban-subtask:has(input:checked) span { text-decoration:line-through; color:var(--muted); }
.kanban-comment { margin:0; padding:9px; border-left:3px solid var(--line); background:var(--panel2); font-size:12px; line-height:1.55; white-space:pre-wrap; overflow-wrap:anywhere; }
#subproject-form { display:grid; gap:10px; }
@media(max-width:700px){.kanban-heading-actions,.kanban-inline-add{grid-template-columns:minmax(0,1fr)}.kanban-heading-actions{display:grid}.kanban-heading-actions button{width:100%}}

/* Card removal controls leave the board and its scrolling layout intact. */
.kanban-card-heading { display:grid; grid-template-columns:minmax(0,1fr) 32px; gap:8px; align-items:start; }
.kanban-trash { display:inline-flex; align-items:center; justify-content:center; min-width:32px; min-height:32px; padding:6px; color:var(--muted); background:transparent; border:1px solid transparent; border-radius:7px; cursor:pointer; }
.kanban-trash svg { width:18px; height:18px; flex:none; }.kanban-trash:hover { color:var(--err); border-color:var(--err); background:var(--panel2); }
.kanban-trash:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
.kanban-trash:disabled { opacity:.45; cursor:default; }
@media(max-width:700px) { .kanban-card-heading { grid-template-columns:minmax(0,1fr) 40px; }.kanban-trash { min-width:40px; min-height:40px; } }

/* A viewport-contained board, with room to read and grab every card. */
#kanban-pane.on { overflow:auto; min-height:0; gap:12px; grid-template-rows:auto auto auto minmax(0,1fr); }
.kanban-scroll-controls { display:flex; align-items:center; gap:10px; color:var(--muted); font-size:11px; }
.kanban-scroll-controls input { flex:1; min-width:0; height:18px; padding:0; accent-color:var(--accent); cursor:ew-resize; }
.kanban-scroll-controls button { padding:2px 10px; min-height:30px; font-size:16px; }
.kanban-board { display:flex; align-items:stretch; gap:16px; min-height:0; overflow-x:auto; overflow-y:hidden; padding:2px 2px 14px; scrollbar-width:auto; scrollbar-color:var(--accent) var(--panel); scroll-snap-type:x proximity; overscroll-behavior-x:contain; }
.kanban-board::-webkit-scrollbar { height:12px; }.kanban-board::-webkit-scrollbar-track { background:var(--panel); border-radius:6px; }.kanban-board::-webkit-scrollbar-thumb { background:var(--accent); border:3px solid var(--panel); border-radius:6px; }
.kanban-lane { flex:0 0 clamp(270px,26vw,340px); display:flex; flex-direction:column; max-height:100%; overflow-y:auto; scroll-snap-align:start; border-top:3px solid var(--line); padding:16px; }
.kanban-lane[data-lane="in_progress"] { border-top-color:var(--accent); }
.kanban-lane[data-lane="needs_you"] { border-top-color:#bd882b; }
.kanban-lane[data-lane="completed"] { border-top-color:#59957e; }
.kanban-lane[data-lane="achieved"] { border-top-color:#7d70b5; }
.kanban-lane-heading { position:sticky; top:-16px; z-index:1; background:var(--panel); padding:12px 0; margin:-4px 0 10px; }
.kanban-lane-heading h2 { font-size:13px; font-weight:650; }
.kanban-count { min-width:24px; text-align:center; background:var(--bg); border-radius:8px; padding:4px; }
.kanban-stack { align-content:start; gap:12px; flex:1; }
.kanban-card { cursor:grab; touch-action:pan-y; user-select:none; transition:box-shadow .15s,border-color .15s; padding:16px; }
/* Freeze-drag mode: cards pan naturally so the whole board and every column scroll freely. */
.kanban-board.kanban-frozen .kanban-card { touch-action:auto; cursor:default; user-select:auto; }
.kanban-board.kanban-frozen .kanban-card * { cursor:default; }
.kanban-card:hover { border-color:var(--accent); box-shadow:0 4px 16px #0001; }
.kanban-card:focus-visible { outline:2px solid var(--accent); outline-offset:2px; }
.kanban-card-actions button { cursor:pointer; }.kanban-card-title { cursor:grab; }
.kanban-card-actions { display:flex; flex-wrap:wrap; gap:6px; }
.kanban-deliverable { border:1px solid var(--accent); background:var(--bg); color:var(--accent); border-radius:7px; }
.kanban-drag-ghost { position:fixed; pointer-events:none; opacity:.92; z-index:2147480000; transform:rotate(2deg); box-shadow:0 16px 40px #0004; max-height:240px; overflow:hidden; }
.kanban-output { width:min(850px,calc(100vw - 28px)); }.kanban-output>button:first-child { float:right; }
.kanban-output-body { margin-top:20px; user-select:text; overflow-wrap:anywhere; white-space:pre-wrap; font-size:14px; line-height:1.7; }
.kanban-output-body pre { overflow:auto; white-space:pre; }.kanban-output-body img { max-width:100%; }
@media(max-width:700px) { #kanban-pane.on { padding:16px 12px; }.kanban-lane { flex-basis:min(290px,calc(100vw - 54px)); }.kanban-card-actions button { min-height:40px; }.kanban-heading-actions { display:flex; }.kanban-heading-actions button { width:auto; flex:1; padding:9px; }.kanban-scroll-controls button { min-height:40px; } }
@media(prefers-reduced-motion:reduce) { .kanban-card { transition:none; } }

.kanban-stage-label{font-size:11px;font-weight:600;color:var(--accent);margin:0 0 8px}.kanban-card:has(.kanban-stage-label){transition:box-shadow .12s ease}.kanban-board.is-card-dragging{scroll-snap-type:none}

/* Independent columns and the surrounding page can scroll while drag is enabled. */
#kanban-pane.on { grid-template-rows:auto auto auto minmax(320px,1fr); overscroll-behavior-y:auto; }
.kanban-lane { min-height:0; overscroll-behavior-y:auto; scrollbar-gutter:stable; }
.kanban-stack { flex:0 0 auto; }
.kanban-lane-heading { flex-shrink:0; }
.kanban-card { touch-action:auto; }
.kanban-stage-row { display:flex; align-items:center; justify-content:space-between; gap:8px; }
.kanban-stage-row .kanban-stage-label { margin:0; }
.kanban-stage-row .kanban-drag-handle { display:flex; align-items:center; justify-content:center; flex:0 0 36px; min-height:36px; padding:0; font-size:22px; border-radius:6px; touch-action:none; }
.kanban-drag-handle:hover { color:var(--text); background:var(--panel2); }
.kanban-board.kanban-frozen .kanban-drag-handle { touch-action:auto; opacity:.45; }
.kanban-card.is-dragging,.kanban-card.is-dragging .kanban-drag-handle { cursor:grabbing; }
@media(pointer:coarse) { .kanban-stage-row .kanban-drag-handle { flex-basis:44px; min-height:44px; } }
