/* ===== gantt.css ===== */
.g-wrap{background:linear-gradient(180deg,var(--bg2),color-mix(in srgb,var(--bg) 80%,#000));border:1px solid var(--line-strong);
  border-radius:16px;overflow:hidden;}
.g-scroll{overflow-x:auto;overflow-y:hidden;}
.g-axis{display:flex;background:var(--head-bg);border-bottom:1px solid var(--line-strong);position:sticky;top:0;z-index:6;}
.g-corner{width:288px;flex:0 0 288px;display:flex;align-items:center;padding:0 18px;font-size:11.5px;color:var(--muted);
  font-weight:600;border-inline-end:1px solid var(--line-strong);position:sticky;inset-inline-start:0;background:var(--head-bg);z-index:7;}
.g-track{position:relative;height:54px;}
.g-month{position:absolute;top:0;height:54px;border-inline-start:1px solid var(--line-strong);display:flex;flex-direction:column;justify-content:center;padding-inline-start:10px;}
.g-month .m{font-size:13px;font-weight:700;}.g-month .m .en{color:var(--muted);font-weight:600;}
.g-month .y{font-size:9px;color:var(--muted2);letter-spacing:.1em;}
.g-wk{position:absolute;top:36px;height:18px;border-inline-start:1px solid var(--line);}
.g-body{display:flex;align-items:flex-start;}
.g-left{width:288px;flex:0 0 288px;position:sticky;inset-inline-start:0;z-index:4;background:var(--bg2);border-inline-end:1px solid var(--line-strong);}
.g-right{position:relative;}
.g-grid{position:absolute;inset:0;z-index:0;pointer-events:none;}
.g-gl{position:absolute;top:0;bottom:0;border-inline-start:1px solid var(--week);}
.g-gl.m{border-inline-start:1px solid var(--line);}

.g-hcell{height:46px;display:flex;align-items:center;gap:10px;padding:0 16px;border-top:1px solid var(--line-strong);cursor:pointer;}
.g-band{width:5px;height:24px;border-radius:5px;flex:0 0 5px;}
.g-hn .nm{font-size:14.5px;font-weight:700;line-height:1.1;}
.g-hsub{font-size:10.5px;color:var(--muted);margin-top:2px;}
/* زر التعديل السريع داخل الجانت وخريطة الطريق — يظهر عند المرور على الصف */
.g-edit{border:1px solid transparent;background:transparent;color:var(--muted);border-radius:7px;padding:3px 5px;
  cursor:pointer;display:inline-flex;align-items:center;opacity:0;transition:opacity .12s,color .12s,border-color .12s;flex:0 0 auto;}
.g-hcell:hover .g-edit,.g-tcell:hover .g-edit,.rm-label:hover .g-edit,.g-edit:focus-visible{opacity:1;}
.g-edit:hover{color:var(--accent);border-color:var(--line-strong);}
.rm-label .g-edit,.g-hcell .g-edit{margin-inline-start:auto;}
.g-hcell .g-edit+.g-pill{margin-inline-start:8px;}
.g-tcell .g-edit{margin-inline-start:6px;}
.g-pill{margin-inline-start:auto;display:flex;flex-direction:column;align-items:flex-end;gap:1px;text-align:end;flex:0 0 auto;}
.g-pill b{font-size:12px;font-weight:700;color:var(--ink);}
.g-pill .en{font-size:10px;color:var(--muted);}
.g-htrack{height:46px;position:relative;border-top:1px solid var(--line-strong);cursor:pointer;}
.g-env{position:absolute;top:13px;height:20px;border-radius:7px;display:flex;align-items:center;justify-content:flex-start;gap:10px;padding:0 10px;
  color:#fff;font-size:10px;font-weight:600;opacity:.62;overflow:hidden;}
.g-env-d{flex:0 0 auto;opacity:.95;white-space:nowrap;}
.g-envout{position:absolute;top:15px;font-size:10px;font-weight:600;color:var(--muted);white-space:nowrap;}

.g-tcell{height:30px;display:flex;align-items:center;gap:8px;padding:0 16px 0 24px;cursor:pointer;}
.g-tcell.alt{background:var(--rowalt);}
.g-tcell:hover{background:color-mix(in srgb,var(--ink) 5%,transparent);}
.g-dot{flex:0 0 8px;}
.g-tn{font-size:12px;font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.g-dev{font-size:9.5px;font-weight:700;color:var(--warn);background:color-mix(in srgb,var(--warn) 16%,transparent);padding:1px 5px;border-radius:5px;flex:0 0 auto;}
.g-trng{margin-inline-start:auto;font-size:9.5px;color:var(--muted2);white-space:nowrap;}
.g-ttrack{height:30px;position:relative;}
.g-ttrack.alt{background:var(--rowalt);}

.g-plan{position:absolute;top:8px;height:14px;border-radius:5px;border:1.5px dashed;opacity:.5;background:transparent;}
.g-base{position:absolute;top:13px;height:4px;border-radius:3px;background:repeating-linear-gradient(90deg,var(--muted2),var(--muted2) 3px,transparent 3px,transparent 6px);opacity:.6;}
.g-chg{display:inline-flex;color:var(--warn);flex:0 0 auto;}
.g-chg svg{width:12px;height:12px;}
.g-cancelled .nm{text-decoration:line-through;text-decoration-color:var(--bad);opacity:.8;}
.g-cx{font-size:9.5px;font-weight:700;color:var(--bad);background:color-mix(in srgb,var(--bad) 16%,transparent);padding:1px 5px;border-radius:5px;text-decoration:none;display:inline-block;}
.g-row-cancel{opacity:.4;}
.g-row-cancel .g-tn{text-decoration:line-through;}
.g-act{position:absolute;top:6px;height:18px;border-radius:6px;box-shadow:0 2px 5px -2px rgba(0,0,0,.5);overflow:hidden;}
.g-bar{position:absolute;top:6px;height:18px;border-radius:6px;overflow:hidden;box-shadow:0 2px 6px -2px rgba(0,0,0,.45);}
.g-cap{position:absolute;inset-inline-start:0;top:0;bottom:0;width:3px;}
.g-d{position:absolute;inset-inline-start:9px;top:0;bottom:0;display:flex;align-items:center;font-size:10px;font-weight:600;color:#fff;text-shadow:0 1px 1px rgba(0,0,0,.5);}
.g-dout{position:absolute;top:8px;font-size:10px;font-weight:600;color:var(--muted);white-space:nowrap;}

/* roadmap */
.rm-label{display:flex;align-items:center;gap:10px;padding:0 16px;border-bottom:1px solid var(--line);}
.rm-nm{display:flex;flex-direction:column;line-height:1.25;font-size:13.5px;font-weight:600;color:var(--ink);}
.rm-en{font-size:10px;font-weight:500;color:var(--muted2);}
.rm-track{position:relative;border-bottom:1px solid var(--line);}
.rm-track.alt{background:var(--rowalt);}
.rm-bar{position:absolute;top:8px;height:24px;border-radius:7px;overflow:hidden;box-shadow:0 3px 8px -3px rgba(0,0,0,.4);display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 12px;}
.rm-lab{font-size:12px;font-weight:600;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.4);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.rm-dur{font-size:10.5px;font-weight:500;color:rgba(255,255,255,.9);text-shadow:0 1px 2px rgba(0,0,0,.4);white-space:nowrap;flex:0 0 auto;}
.rm-out{position:absolute;top:13px;font-size:11.5px;font-weight:600;color:var(--ink);white-space:nowrap;}
.rm-out .en{color:var(--muted);font-weight:500;}
.rm-ms{position:absolute;top:11px;z-index:3;}
html[dir="rtl"] .rm-ms{transform:translateX(50%);}
.g-prgcap{position:absolute;top:4px;width:2px;height:22px;border-radius:2px;opacity:.9;}
.g-ms{position:absolute;top:7px;z-index:3;}
html[dir="rtl"] .g-ms{transform:translateX(50%);}

.g-today{position:absolute;top:0;width:0;border-inline-start:2px dashed var(--today);z-index:5;pointer-events:none;}
.g-today .flag{position:absolute;top:4px;background:var(--today);color:#1a0a0e;font-size:9.5px;font-weight:700;padding:2px 6px;border-radius:5px;white-space:nowrap;}
html[dir="rtl"] .g-today .flag{transform:translateX(50%);}

[data-si]{transition:none;}
.g-dim{opacity:.16 !important;}

/* legend for planned/actual */
.g-legend{display:flex;flex-wrap:wrap;gap:16px;align-items:center;font-size:12px;color:var(--muted);margin:14px 2px 0;}
.g-legend .it{display:flex;align-items:center;gap:7px;}
.g-legend .sw{width:22px;height:13px;border-radius:4px;}
.g-legend .sw.plan{border:1.5px dashed var(--muted);background:transparent;}
.g-legend .sw.act{background:linear-gradient(90deg,var(--accent),var(--accent-d));}
.g-legend .sw.late{background:var(--bad);}
.g-legend .sw.base{background:repeating-linear-gradient(90deg,var(--muted2),var(--muted2) 3px,transparent 3px,transparent 6px);}
