/* A compact Gantt view: one date grid, project context in group headers, and explicit task chains. */
body[data-page=timeline] .page-toolbar { display:block; }
body[data-page=timeline] .metrics { display:none; }
.gantt-toolbar { display:grid; gap:10px; width:100%; }
.gantt-toolbar-main { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:10px 16px; }
.gantt-toolbar .chips { margin:0; }
.gantt-month-controls { display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.gantt-month-controls input { width:160px; padding:7px 10px; font-weight:600; }
.gantt-toolbar-secondary { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; color:#657087; }
.gantt-toolbar-secondary > span { display:inline-flex; align-items:center; gap:7px; font-size:13px; }
.gantt-toolbar-secondary .icon { width:16px; height:16px; color:#7451c8; }
.gantt-filter-details { position:relative; }
.gantt-filter-details > summary { display:flex; align-items:center; gap:6px; cursor:pointer; color:#60498d; font-size:13px; font-weight:600; padding:6px 10px; border:1px solid #ded8ed; border-radius:9px; background:#fff; list-style:none; }
.gantt-filter-details > summary::-webkit-details-marker { display:none; }
.gantt-filter-details[open] > summary { background:#f4efff; border-color:#cfc0ee; }
.gantt-toolbar-options { display:flex; align-items:center; flex-wrap:wrap; gap:10px 16px; margin-top:8px; padding:11px 13px; border:1px solid #e1dceb; border-radius:11px; background:#fcfbff; box-shadow:0 8px 24px #4a356112; }
.gantt-toolbar-options > label { display:flex; align-items:center; gap:7px; font-size:13px; white-space:nowrap; }
.gantt-toolbar-options select { width:auto; padding:6px 27px 6px 9px; }
.gantt-toolbar-options .calendar-weekend-options { border:0; padding:0; background:none; }
.gantt-check input { width:17px; height:17px; accent-color:#6842cc; margin:0; }
.gantt-insights { display:grid; grid-template-columns:repeat(4,minmax(150px,1fr)); gap:10px; margin:16px 0 12px; }
.gantt-insights article { display:grid; grid-template-columns:36px 1fr; align-items:center; gap:10px; min-height:86px; padding:12px 14px; border:1px solid var(--edge); border-radius:13px; background:var(--tint); color:var(--ink); }
.gantt-insights article > .icon { width:22px; height:22px; padding:7px; border-radius:10px; background:#ffffffb8; }
.gantt-insights article span { display:grid; grid-template-columns:1fr auto; align-items:baseline; gap:2px 8px; font-size:13px; font-weight:600; }
.gantt-insights article strong { font-size:23px; line-height:1; }
.gantt-insights article small { grid-column:1 / -1; color:#697387; font-size:11px; font-weight:400; }
.gantt-summary { display:flex; align-items:center; justify-content:space-between; gap:10px; flex-wrap:wrap; margin:0 0 10px; color:#667188; font-size:13px; }
.gantt-summary strong { color:#5d3fa7; }
.gantt-legend { display:flex; align-items:center; gap:12px; flex-wrap:wrap; font-size:12px; }
.gantt-legend span { display:inline-flex; align-items:center; gap:5px; }
.gantt-legend i { display:inline-block; width:21px; height:10px; border-radius:4px; background:#7752c4; }
.gantt-legend i.plan { position:relative; height:11px; border:0; border-top:2px solid #9a7bd5; border-radius:0; background:none; }
.gantt-legend i.plan::before, .gantt-legend i.plan::after { content:''; position:absolute; top:-2px; width:2px; height:9px; background:#9a7bd5; }
.gantt-legend i.plan::before { left:0; }
.gantt-legend i.plan::after { right:0; }
.gantt-legend i.status-todo { background:#aeb7c5; }
.gantt-legend i.status-doing { background:#4f8edc; }
.gantt-legend i.status-paused { background:#9b74d4; }
.gantt-legend i.status-waiting { background:#e5a640; }
.gantt-legend i.status-done { background:#48a77c; }
.gantt-legend i.legacy { background:#e5eaf1; border:1px dashed #8a98ad; }
.gantt-legend i.today { width:2px; height:13px; border-radius:0; background:#de6b89; }
.gantt-hidden-notice { display:flex; gap:7px; align-items:center; flex-wrap:wrap; color:#8e6728; background:#fff7e5; border-radius:8px; padding:8px 12px; margin-bottom:10px; }
.gantt-hidden-notice .icon { width:15px; height:15px; }
.gantt-scroll { overflow:auto; max-height:70vh; border:1px solid #dfe3ed; border-radius:13px; background:white; scrollbar-color:#cfc8df #f8f6fc; }
.gantt-scroll:focus-visible { outline:3px solid #b7a1ef; outline-offset:3px; }
.gantt-table { --gantt-days:31; --gantt-day-width:36px; --gantt-label-width:350px; width:100%; min-width:calc(var(--gantt-label-width) + var(--gantt-days) * var(--gantt-day-width)); table-layout:fixed; border-collapse:separate; border-spacing:0; }
.gantt-table.zoom-compact { --gantt-day-width:25px; }
.gantt-table.zoom-fit { --gantt-day-width:18px; }
.gantt-table.zoom-wide { --gantt-day-width:50px; }
.gantt-label-column { width:var(--gantt-label-width); }
.gantt-table th, .gantt-table td { padding:0; text-align:left; border-bottom:1px solid #eceef5; font-weight:400; }
.gantt-table .gantt-task-cell { position:sticky; left:0; z-index:2; border-right:1px solid #dfe2ed; background:white; }
.gantt-table thead th { position:sticky; top:0; z-index:6; background:#fbfaff; height:60px; }
.gantt-table thead .gantt-task-cell { z-index:7; padding:9px 14px; color:#53466f; font-weight:600; }
.gantt-table thead .gantt-task-cell small { display:block; font-weight:400; margin-top:2px; color:#736b82; }
.gantt-dates { display:grid; grid-template-columns:repeat(var(--gantt-days),minmax(0,1fr)); height:60px; }
.gantt-date { display:flex; flex-direction:column; justify-content:center; align-items:center; border-left:1px solid #eceef5; gap:1px; color:#5c667e; }
.gantt-date b { font-weight:600; line-height:24px; width:100%; max-width:25px; text-align:center; }
.gantt-date small { color:#747d90; }
.gantt-date.weekend { background:#f6f1fa; }
.gantt-date.weekend small { color:#846c9f; }
.gantt-date.is-today b { background:#d76686; color:#fff; border-radius:7px; }
.gantt-date.is-today small { color:#a83e60; }
.gantt-table.zoom-fit .gantt-date small { display:none; }
.gantt-group th, .gantt-group td { background:#f7f4fc; min-height:48px; }
.gantt-group .gantt-task-cell { background:#f7f4fc; }
.gantt-group button { display:flex; gap:8px; align-items:center; width:100%; min-height:48px; padding:9px 13px; border:0; background:transparent; color:var(--ink); border-radius:0; text-align:left; }
.gantt-group button .icon { width:14px; height:14px; flex-shrink:0; margin:0; }
.gantt-group button[aria-expanded=true] .icon { transform:rotate(90deg); }
.gantt-group strong { overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.gantt-group button span { margin-left:auto; padding:2px 7px; background:var(--tint); border:1px solid var(--edge); border-radius:6px; font-size:11px; }
.gantt-group-meta { display:flex; align-items:center; gap:12px; min-height:48px; padding:8px 13px; color:#756780; overflow:hidden; }
.gantt-group-meta strong { flex:1; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-weight:500; }
.gantt-group-meta span { display:inline-flex; align-items:center; gap:4px; flex-shrink:0; font-size:11px; }
.gantt-group-meta .icon { width:12px; height:12px; }
.gantt-sequence th, .gantt-sequence td { background:#fffdf7; }
.gantt-sequence .gantt-task-cell { display:flex; align-items:center; gap:7px; min-height:48px; padding:8px 14px; color:#80651e; font-size:12px; font-weight:600; }
.gantt-sequence .gantt-task-cell .icon { width:14px; height:14px; }
.gantt-sequence-list { display:flex; gap:12px; align-items:center; min-height:48px; padding:7px 12px; overflow:auto hidden; }
.gantt-chain { display:flex; align-items:center; flex-shrink:0; gap:5px; }
.gantt-chain button { max-width:180px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; border:1px solid #eadba8; background:#fff7dc; color:#735416; border-radius:7px; padding:4px 8px; font-size:11px; }
.gantt-chain-arrow { color:#b07c17; font-weight:700; }
.gantt-task-row .gantt-task-cell { padding:8px 13px; vertical-align:middle; border-left:3px solid var(--tone); }
.gantt-task-row .task-name { width:100%; overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; text-align:left; }
.gantt-child-mark { color:#997dbb; margin-right:5px; }
.gantt-task-context { color:#606c80; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; margin:2px 0 3px; }
.gantt-task-meta { display:flex; align-items:center; gap:4px 7px; min-height:19px; overflow:hidden; white-space:nowrap; color:#748094; }
.gantt-task-meta > * { flex-shrink:0; }
.gantt-task-meta .badge { padding:1px 5px; }
.gantt-task-meta .icon { width:11px; height:11px; margin-right:2px; vertical-align:-2px; }
.gantt-blocker { padding:1px 5px; border:0; background:#fff0c8; color:#8a5f0f; border-radius:5px; }
.gantt-ready { color:#247357; }
.gantt-overdue { color:#b63e60 !important; font-weight:600; }
.gantt-track { position:relative; height:88px; overflow:hidden; }
.gantt-track svg { display:block; width:100%; height:100%; }
.gantt-grid-line { stroke:#eceff5; stroke-width:1; vector-effect:non-scaling-stroke; }
.gantt-grid-line.week-start { stroke:#d8deea; }
.gantt-weekend { fill:#fbf8fd; }
.gantt-lane-divider { stroke:#e8ebf2; vector-effect:non-scaling-stroke; }
.gantt-today-line { stroke:#de7491; stroke-width:1.5; stroke-dasharray:3 3; opacity:.85; vector-effect:non-scaling-stroke; }
.gantt-range { cursor:pointer; }
.gantt-range rect, .gantt-range path { stroke-width:1; vector-effect:non-scaling-stroke; }
.gantt-range.plan { fill:none; stroke:var(--tone); }
.gantt-range.actual { fill:var(--tone); stroke:var(--tone); }
.gantt-range.legacy { fill:#e4eaf2; stroke:#91a0b6; stroke-dasharray:4 3; }
.gantt-range.status-backlog, .gantt-range.status-todo { fill:#aeb7c5; stroke:#7e899a; }
.gantt-range.status-doing { fill:#4f8edc; stroke:#326caf; }
.gantt-range.status-paused { fill:#9b74d4; stroke:#7652aa; }
.gantt-range.status-waiting { fill:#e5a640; stroke:#ae7720; }
.gantt-range.status-done { fill:#48a77c; stroke:#2b7c5a; }
.gantt-range.status-cancelled { fill:#c68991; stroke:#985b65; }
.gantt-range .gantt-plan-hit { fill:transparent; stroke:transparent; stroke-width:1; }
.gantt-range .gantt-plan-bracket { fill:none; stroke:var(--tone); stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
.gantt-range .gantt-continuation { stroke:#504163; fill:none; stroke-dasharray:none; }
.gantt-range.actual .gantt-continuation, .gantt-range.status .gantt-continuation { stroke:#fff; }
.gantt-range:hover, .gantt-range:focus { filter:brightness(.92); outline:none; }
.gantt-range:focus rect, .gantt-range:focus path { stroke:#453260; stroke-width:2; }
.gantt-track-message { position:absolute; inset:0; display:flex; align-items:center; gap:7px; padding-left:12px; color:#7d6d8b; pointer-events:none; background:#ffffffb0; }
.gantt-track-message button { pointer-events:auto; }
.gantt-help { margin:10px 0 14px; }
.gantt-extra { margin-top:10px; border:1px solid #e3e1eb; border-radius:11px; background:#fff; padding:11px 14px; }
.gantt-extra > summary { display:flex; align-items:center; gap:7px; cursor:pointer; font-weight:600; color:#64517e; }
.gantt-extra > summary::after { content:'›'; margin-left:auto; }
.gantt-extra[open] > summary::after { transform:rotate(90deg); }
.gantt-extra > summary .icon { width:15px; height:15px; }
.gantt-extra > summary span { font-weight:400; color:#786f86; }
.gantt-extra-list { margin-top:9px; max-height:350px; overflow:auto; }
.gantt-extra-row { display:flex; align-items:center; gap:12px; padding:10px 1px; border-top:1px solid #f0edf5; }
.gantt-extra-row > div { flex:1; min-width:0; }
.gantt-extra-row small { display:block; color:#737e91; margin-top:3px; overflow-wrap:anywhere; }
.gantt-extra-row > button { flex-shrink:0; }
.gantt-accessible { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
@media(max-width:900px) {
  .gantt-insights { grid-template-columns:repeat(2,minmax(140px,1fr)); }
  .gantt-group-meta strong { display:none; }
}
@media(max-width:700px) {
  .gantt-toolbar-main { align-items:flex-start; }
  .gantt-month-controls { gap:4px; }
  .gantt-month-controls input { font-size:16px; width:155px; }
  .gantt-toolbar-secondary { align-items:flex-start; }
  .gantt-toolbar-options { gap:12px; }
  .gantt-insights { grid-template-columns:1fr 1fr; }
  .gantt-insights article { grid-template-columns:30px 1fr; padding:10px; min-height:78px; }
  .gantt-insights article > .icon { width:19px; height:19px; padding:5px; }
  .gantt-table { --gantt-label-width:260px; }
  .gantt-task-row .gantt-task-cell { padding:7px 8px; }
  .gantt-task-meta { gap:4px; }
  .gantt-summary, .gantt-legend { gap:8px; }
  .gantt-extra-row { flex-wrap:wrap; gap:8px; }
  .gantt-extra-row > div { flex-basis:65%; }
}
