﻿/* ── GANTT ── */
#gantt-view{flex:1;display:none;flex-direction:column;overflow:hidden;position:relative}
#gantt-toolbar{height:40px;background:var(--s1);border-bottom:1px solid var(--b1);display:flex;align-items:center;padding:0 14px;gap:8px;flex-shrink:0}
.gt-label{font-size:10px;font-family:var(--mono);color:var(--t3);text-transform:uppercase;letter-spacing:.4px}
.gt-zoom-btn{width:26px;height:26px;background:var(--s2);border:1px solid var(--b2);border-radius:5px;color:var(--t2);cursor:pointer;font-size:13px;display:flex;align-items:center;justify-content:center;transition:.1s}
.gt-zoom-btn:hover{color:var(--t1);border-color:var(--b3)}
#gantt-group-select,#gantt-filter-select,#gantt-cal-select{background:var(--s2);border:1px solid var(--b2);border-radius:5px;padding:3px 8px;color:var(--t2);font-size:11px;font-family:var(--sans);outline:none;cursor:pointer}
#gantt-today-btn{padding:3px 10px;background:rgba(110,231,183,0.1);border:1px solid rgba(110,231,183,0.25);border-radius:5px;color:var(--accent);font-size:11px;font-family:var(--sans);cursor:pointer}
#gantt-today-btn:hover{background:rgba(110,231,183,0.2)}
#gantt-edit-btn{padding:3px 10px;background:transparent;border:1px solid var(--b2);border-radius:5px;color:var(--t3);font-size:11px;font-family:var(--sans);cursor:pointer;transition:.12s all}
#gantt-edit-btn:hover{color:var(--t2);border-color:var(--b3)}
#gantt-stats{margin-left:auto;display:flex;gap:14px;align-items:center}
.g-stat{font-size:10px;font-family:var(--mono);color:var(--t3)}
.g-stat span{color:var(--t1)}
/* GANTT — two-panel sticky scroll */
#gantt-body{flex:1;display:flex;flex-direction:row;overflow:hidden}
/* Left sticky panel */
#gantt-left{width:var(--gl-w,260px);min-width:var(--gl-w,260px);flex-shrink:0;border-right:1px solid var(--b1);display:flex;flex-direction:column;overflow:hidden;z-index:10;background:var(--s1)}
#gantt-left-header{height:50px;flex-shrink:0;display:flex;align-items:center;padding:0 8px 0 12px;font-size:10px;font-family:var(--mono);color:var(--t3);text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--b1);gap:6px}
#gantt-left.collapsed{width:36px!important;min-width:36px!important}
#gantt-left.collapsed .gantt-left-title{display:none}
#gantt-left.collapsed #gantt-rows-left{display:none}
#gantt-toggle-tree{background:none;border:none;color:var(--t3);cursor:pointer;font-size:11px;padding:2px 4px;border-radius:3px;margin-left:auto;flex-shrink:0;transition:.1s}
#gantt-toggle-tree:hover{color:var(--t1);background:var(--s3)}
#gantt-rows-left{flex:1;overflow:hidden;position:relative}
#gantt-rows-inner{position:absolute;top:0;left:0;right:0}
/* Right scrollable area */
#gantt-right-wrap{flex:1;display:flex;flex-direction:column;overflow:hidden;min-width:0;position:relative}
#gantt-header-canvas-wrap{height:50px;flex-shrink:0;border-bottom:1px solid var(--b1);overflow:hidden}
#gantt-header-canvas{display:block}
#gantt-scroll{flex:1;overflow:auto;-webkit-overflow-scrolling:touch;touch-action:pan-x pan-y}
#gantt-scroll::-webkit-scrollbar{height:8px;width:8px}
#gantt-scroll::-webkit-scrollbar-thumb{background:var(--s4);border-radius:4px}
#gantt-scroll::-webkit-scrollbar-corner{background:var(--s2)}
#gantt-canvas-wrap{position:relative;display:inline-block;min-height:100%}
#gantt-grid-canvas{pointer-events:none;display:block}
#gantt-bars-canvas{position:absolute;top:0;left:0;user-select:none;-webkit-user-select:none;touch-action:pan-y}
/* legacy */
#gantt-table{display:none}
.gr-left{height:36px;display:flex;align-items:center;padding:0 8px;gap:6px;cursor:pointer;border-bottom:1px solid var(--b1);transition:.1s background;overflow:hidden}
.gr-left:hover{background:var(--s2)}
.gr-left.hl{background:rgba(167,139,250,0.08)}
.gr-left.grl-parent{background:rgba(255,255,255,0.02)}
.gr-dot-sm{width:6px;height:6px;border-radius:50%;flex-shrink:0}
.gr-title-lbl{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}
.gr-right-meta{display:flex;align-items:center;gap:4px;flex-shrink:0}
.gr-pct-lbl{font-size:9px;font-family:var(--mono);color:var(--t3);min-width:24px;text-align:right}
.gr-col-btn{width:14px;height:14px;display:flex;align-items:center;justify-content:center;font-size:9px;color:var(--t3);border-radius:2px;flex-shrink:0}
.gr-col-btn:hover{color:var(--t1);background:var(--s4)}
/* legacy compat */
#gantt-right{display:none}
#gantt-chart-scroll{display:none}
#gantt-tip{position:absolute;background:var(--s2);border:1px solid var(--b2);border-radius:8px;padding:9px 13px;font-size:11px;pointer-events:none;opacity:0;transition:opacity .12s;z-index:9999;max-width:240px}
#gantt-tip .gt-title{font-size:12px;font-weight:600;color:var(--t1);margin-bottom:5px}
#gantt-tip .gt-row{display:flex;justify-content:space-between;gap:14px;margin-bottom:2px;font-size:10px}
#gantt-tip .gt-k{color:var(--t3)}
#gantt-tip .gt-v{color:var(--t1);font-family:var(--mono)}
#gantt-tip .gt-pb{margin-top:6px;height:4px;background:var(--s4);border-radius:2px;overflow:hidden}
#gantt-tip .gt-pf{height:100%;border-radius:2px}
#gantt-empty{position:absolute;inset:0;display:none;flex-direction:column;align-items:center;justify-content:center;color:var(--t3);gap:8px;pointer-events:none;background:var(--bg)}



/* Gantt toolbar mobile collapse */
#gantt-cfg-btn{display:none;padding:4px 9px;background:var(--s2);border:1px solid var(--b2);border-radius:5px;color:var(--t2);cursor:pointer;font-size:14px;flex-shrink:0}
#gantt-toolbar-inner{display:flex;align-items:center;gap:8px;flex:1;overflow:hidden}
#gantt-toolbar-panel{display:flex;align-items:center;gap:8px;flex-wrap:nowrap}
@media(max-width:768px){
  #gantt-cfg-btn{display:flex!important;align-items:center}
  #gantt-toolbar{padding:0 8px;gap:6px;position:relative}
  #gantt-toolbar-panel{
    display:none;position:absolute;top:40px;left:0;right:0;z-index:30;
    background:var(--s1);border-bottom:1px solid var(--b2);
    padding:8px 12px;gap:8px;flex-wrap:wrap;box-shadow:0 4px 12px rgba(0,0,0,.4);
  }
  #gantt-toolbar-panel.open{display:flex!important}
  #gantt-stats{gap:8px}
  .g-stat{font-size:9px}
}

/* ── GANTT LANDSCAPE LOCK ── */
#gantt-rotate-prompt{
  display:none;position:absolute;inset:0;z-index:50;
  background:var(--bg);flex-direction:column;
  align-items:center;justify-content:center;gap:12px;
  color:var(--t3);text-align:center;padding:32px;
}
#gantt-rotate-prompt .rp-icon{font-size:36px;animation:rotateHint 2s ease-in-out infinite}
#gantt-rotate-prompt p{font-size:13px;line-height:1.6;max-width:240px}
#gantt-rotate-prompt small{font-size:11px;color:var(--t4)}
@keyframes rotateHint{0%,100%{transform:rotate(0deg)}50%{transform:rotate(90deg)}}
@media (max-width:600px) and (orientation:portrait){
  #gantt-rotate-prompt{display:flex!important}
}
/* ── ROTATE OVERLAY ── */
#rotate-msg{
  display:none;position:fixed;inset:0;z-index:9999;
  background:var(--bg);flex-direction:column;align-items:center;justify-content:center;gap:16px;
  color:var(--t2);font-size:13px;text-align:center;padding:32px;
}
#rotate-msg .rot-icon{font-size:48px;animation:rot-spin 2s ease-in-out infinite alternate}
@keyframes rot-spin{from{transform:rotate(-15deg)}to{transform:rotate(15deg)}}


/* Gantt toolbar mobile */
#gantt-cfg-btn{display:none;padding:5px 12px;background:var(--s2);border:1px solid var(--b2);border-radius:5px;color:var(--t2);font-size:12px;cursor:pointer;font-family:var(--sans);align-items:center;gap:5px}
#gantt-cfg-btn:hover{color:var(--t1)}
/* Bottom sheet */
#gantt-cfg-sheet{
  position:fixed;bottom:0;left:0;right:0;z-index:500;
  background:var(--s1);border-top:1px solid var(--b2);
  border-radius:16px 16px 0 0;
  padding:0 16px 32px;
  transform:translateY(100%);transition:transform .25s ease;
  box-shadow:0 -8px 32px rgba(0,0,0,.5);
}
#gantt-cfg-sheet.open{transform:translateY(0)}
#gantt-cfg-sheet-handle{width:40px;height:4px;background:var(--b3);border-radius:2px;margin:12px auto 16px}
#gantt-cfg-sheet h4{font-size:11px;font-family:var(--mono);color:var(--t3);text-transform:uppercase;letter-spacing:.5px;margin-bottom:12px}
#gantt-cfg-sheet .cfg-row{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-bottom:1px solid var(--b1)}
#gantt-cfg-sheet .cfg-row:last-child{border-bottom:none}
#gantt-cfg-sheet .cfg-label{font-size:13px;color:var(--t1)}
#gantt-cfg-sheet select{background:var(--s2);border:1px solid var(--b2);border-radius:5px;padding:5px 10px;color:var(--t1);font-size:12px;font-family:var(--sans);outline:none}
#gantt-cfg-sheet .cfg-zoom{display:flex;align-items:center;gap:8px}
#gantt-cfg-sheet .cfg-zoom button{width:32px;height:32px;background:var(--s2);border:1px solid var(--b2);border-radius:6px;color:var(--t1);font-size:16px;cursor:pointer}
#gantt-sheet-backdrop{display:none;position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:499}
#gantt-sheet-backdrop.open{display:block}

