/* Planning grid: header, member and project rows, capacity, blocks and project search. */
.grid{flex:1;overflow:auto;position:relative;background:var(--surface)}
.inner{width:max-content;min-width:100%}
.row{display:flex}
.label{position:sticky;left:0;z-index:2;width:var(--lw);flex:none;background:var(--surface);border-right:1px solid var(--line)}
.tl{position:relative;flex:none}
.head{position:sticky;top:0;z-index:5;background:var(--surface);border-bottom:1px solid var(--line-strong)}
.head .label{z-index:6;display:flex;align-items:flex-end;padding:0 16px 10px;color:var(--muted);font-size:12.5px}
.wk{position:absolute;top:0;height:28px;padding:7px 8px 0;border-left:1px solid var(--line-strong);font-size:12.5px;color:var(--muted);white-space:nowrap;overflow:hidden}
.wk b{color:var(--ink);font-weight:600;margin-right:6px}
.dy{position:absolute;top:28px;height:34px;width:var(--cw);text-align:center;font-size:12.5px;color:var(--muted);padding-top:3px;line-height:1.2}
.dy small{display:block;font-size:10.5px}
.dy.today{color:var(--accent);font-weight:700;box-shadow:inset 0 -2px 0 var(--accent)}
.dy.wstart{border-left:1px solid var(--line-strong)}

.member{border-bottom:1px solid var(--line-strong)}
.mrow .label{display:flex;align-items:center;gap:12px;padding:10px 12px 10px 16px;cursor:pointer;user-select:none}
.mrow .label:hover .mname{text-decoration:underline;text-underline-offset:3px}
.avatar{width:34px;height:34px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:12.5px;font-weight:600;flex:none}
.mtext{display:flex;flex-direction:column;min-width:0;flex:1}
.mname{font-weight:600;font-size:15px}
.mrole{color:var(--muted);font-size:12.5px}
.chev{width:20px;height:20px;transition:transform .15s;color:var(--muted);flex:none}
.member.open .chev{transform:rotate(180deg)}
.mrow .tl{height:58px}
.cap{position:absolute;top:6px;bottom:6px;border-radius:4px;padding:6px 9px;font-size:12.5px;line-height:1.35;background:var(--cap-0);color:var(--ink);overflow:hidden;white-space:nowrap}
.cap b{display:block;font-size:14px;font-weight:600}
.cap.c1{background:var(--cap-1)}
.cap.c2{background:var(--cap-2);color:#fff}
.cap.over{background:var(--cap-over);color:#fff}
.cap.empty{color:var(--muted)}

.prow .label{display:flex;align-items:center;gap:10px;padding:5px 12px 5px 30px}
.pbar{width:3px;align-self:stretch;border-radius:2px;flex:none}
.ptext{display:flex;flex-direction:column;min-width:0;line-height:1.3}
.pclient{color:var(--muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pname{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pname b{font-weight:600;margin-right:4px}
.track,.mrow .tl,.addrow .tl{
  background-image:linear-gradient(to right,var(--line-strong) 1px,transparent 1px),linear-gradient(to right,var(--line) 1px,transparent 1px);
  background-size:calc(var(--cw) * 5) 100%,var(--cw) 100%;
}
.track{cursor:crosshair;border-top:1px solid var(--line);touch-action:pan-y}
.todaycol{position:absolute;top:0;bottom:0;width:var(--cw);background:var(--today);pointer-events:none}
.blk{position:absolute;height:24px;border-radius:4px;background:var(--block);color:var(--block-ink);font-size:12.5px;font-weight:600;display:flex;align-items:center;padding:0 9px;white-space:nowrap;overflow:hidden;cursor:grab;user-select:none;touch-action:none}
.blk[style*='--pc']{background:var(--pc);color:#fff}
.blk:hover{filter:brightness(1.12)}
.blk.dirty{box-shadow:inset 0 0 0 2px rgba(255,255,255,.55)}
.blk.dragging{cursor:grabbing;opacity:.85;z-index:3}
.blk.clip-l{border-top-left-radius:0;border-bottom-left-radius:0}
.blk.clip-r{border-top-right-radius:0;border-bottom-right-radius:0}
.blk .tot{font-weight:400;opacity:.8;margin-left:6px}
.blk .h{position:absolute;top:0;bottom:0;width:8px;cursor:ew-resize}
.blk .hl{left:0}.blk .hr{right:0}
.ghost{position:absolute;top:4px;bottom:4px;border-radius:4px;background:var(--ghost);border:1px dashed var(--accent);pointer-events:none}

.addrow .label{padding:8px 12px 10px 30px}
.addrow .tl{height:46px}
.addrow .cbin{width:100%;padding:6px 8px;border:1px solid var(--line-strong);border-radius:6px;background:var(--surface);color:var(--ink)}
.addrow .cbin::placeholder{color:var(--muted);opacity:1}
.cbpop{position:fixed;z-index:25;background:var(--surface);color:var(--ink);border:1px solid var(--line-strong);border-radius:8px;box-shadow:0 12px 32px rgba(0,0,0,.18);overflow:auto;overscroll-behavior:contain;padding:4px 0}
.cbg{padding:8px 12px 2px;font-weight:600;font-size:13px}
.cbo{padding:6px 12px 6px 22px;font-size:13px;cursor:pointer}
.cbo[aria-selected="true"]{background:var(--block);color:var(--block-ink)}
.cbo mark,.cbg mark{background:transparent;color:inherit;font-weight:700;text-decoration:underline}
.cbempty{padding:10px 12px;font-size:13px;color:var(--muted)}
.rmrow{flex:none;margin-left:auto;width:24px;height:24px;padding:0;border:0;border-radius:6px;background:transparent;color:var(--muted);font-size:17px;line-height:1;cursor:pointer;opacity:0;transition:opacity .12s,background .12s}
.prow:hover .rmrow,.rmrow:focus-visible{opacity:1}
.rmrow:hover{background:var(--line);color:var(--del)}
@media (hover:none){.rmrow{opacity:.65}}
:root{--hl:#FFE9A3}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--hl:#5A4B1C}}
:root[data-theme="dark"]{--hl:#5A4B1C}
@keyframes hlLabel{0%,79%{background-color:var(--hl)}100%{background-color:var(--surface)}}
@keyframes hlTrack{0%,79%{background-color:var(--hl)}100%{background-color:transparent}}
.prow.hl .label{animation:hlLabel 3.8s ease-out var(--hl-d,0ms) both}
.prow.hl .tl{animation:hlTrack 3.8s ease-out var(--hl-d,0ms) both}
@media (prefers-reduced-motion:reduce){.prow.hl .label,.prow.hl .tl{animation-duration:3s;animation-timing-function:steps(1,end)}}

.blk.off{background:var(--line-strong);color:var(--ink);cursor:default}
.blk.shared{cursor:default;background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.18) 0 6px,transparent 6px 12px)}
.blk.failed{background:var(--cap-over)}
.track.ro{cursor:default}
